View | Details | Raw Unified | Return to bug 28376
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/lib/flatpickr/flatpickr.min.js (+2 lines)
Line 0 Link Here
1
/* flatpickr v4.6.9,, @license MIT */
2
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).flatpickr=t()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function t(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var a=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],r=0,l=o.length;r<l;r++,i++)a[i]=o[r];return a}var n=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],a={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,t){return void 0===t&&(t=2),("000"+e).slice(-1*t)},r=function(e){return!0===e?1:0};function l(e,t){var n;return function(){var a=this;clearTimeout(n),n=setTimeout((function(){return e.apply(a,arguments)}),t)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function s(e,t,n){var a=window.document.createElement(e);return t=t||"",n=n||"",a.className=t,void 0!==n&&(a.textContent=n),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,t){return t(e)?e:e.parentNode?f(e.parentNode,t):void 0}function m(e,t){var n=s("div","numInputWrapper"),a=s("input","numInput "+e),i=s("span","arrowUp"),o=s("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var p=function(){},h=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},v={D:p,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*r(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:p,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:p,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},D={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[w.w(e,t,n)]},F:function(e,t,n){return h(w.n(e,t,n)-1,!1,t)},G:function(e,t,n){return o(w.h(e,t,n))},H:function(e){return o(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[r(e.getHours()>11)]},M:function(e,t){return h(e.getMonth(),!0,t)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var t=e.config,n=void 0===t?a:t,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,t,a){var i=a||r;return void 0===n.formatDate||c?t.split("").map((function(t,a,o){return w[t]&&"\\"!==o[a-1]?w[t](e,i,n):"\\"!==t?t:""})).join(""):n.formatDate(e,t,i)}},C=function(e){var t=e.config,n=void 0===t?a:t,o=e.l10n,r=void 0===o?i:o;return function(e,t,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var s=t||(n||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(n&&n.parseDate)l=n.parseDate(e,s);else{l=n&&n.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h="";g<s.length;g++){var w=s[g],b="\\"===w,C="\\"===s[g-1]||b;if(D[w]&&!C){h+=D[w];var M=new RegExp(h).exec(e);M&&(f=!0)&&m["Y"!==w?"push":"unshift"]({fn:v[w],val:M[++p]})}else b||(h+=".");m.forEach((function(e){var t=e.fn,n=e.val;return l=t(l,n,c)||l}))}l=f?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===i&&l.setHours(0,0,0,0),l;n.errorHandler(new Error("Invalid date provided: "+d))}}};function M(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var y=864e5;function x(e){var t=e.defaultHour,n=e.defaultMinute,a=e.defaultSeconds;if(void 0!==e.minDate){var i=e.minDate.getHours(),o=e.minDate.getMinutes(),r=e.minDate.getSeconds();t<i&&(t=i),t===i&&n<o&&(n=o),t===i&&n===o&&a<r&&(a=e.minDate.getSeconds())}if(void 0!==e.maxDate){var l=e.maxDate.getHours(),c=e.maxDate.getMinutes();(t=Math.min(t,l))===l&&(n=Math.min(c,n)),t===l&&n===c&&(a=e.maxDate.getSeconds())}return{hours:t,minutes:n,seconds:a}}"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var a=function(t){t&&Object.keys(t).forEach((function(n){return e[n]=t[n]}))},i=0,o=t;i<o.length;i++){var r=o[i];a(r)}return e});function E(p,v){var w={config:e(e({},a),T.defaultConfig),l10n:i};function E(e){return e.bind(w)}function k(){var e=w.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame((function(){if(void 0!==w.calendarContainer&&(w.calendarContainer.style.visibility="hidden",w.calendarContainer.style.display="block"),void 0!==w.daysContainer){var t=(w.days.offsetWidth+1)*e.showMonths;w.daysContainer.style.width=t+"px",w.calendarContainer.style.width=t+(void 0!==w.weekWrapper?w.weekWrapper.offsetWidth:0)+"px",w.calendarContainer.style.removeProperty("visibility"),w.calendarContainer.style.removeProperty("display")}}))}function I(e){if(0===w.selectedDates.length){var t=void 0===w.config.minDate||M(new Date,w.config.minDate)>=0?new Date:new Date(w.config.minDate.getTime()),n=x(w.config);t.setHours(n.hours,n.minutes,n.seconds,t.getMilliseconds()),w.selectedDates=[t],w.latestSelectedDateObj=t}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,n=g(e),a=n;void 0!==w.amPM&&n===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),d=parseInt(a.value,10),s=e.delta||(t?38===e.which?1:-1:0),u=d+c*s;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;u<i?(u=l+u+r(!f)+(r(f)&&r(!w.amPM)),m&&j(void 0,-1,w.hourElement)):u>l&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&j(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;S(),be(),w._input.value!==a&&w._debouncedChange()}function S(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,t,n=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=n,t=w.amPM.textContent,n=e%12+12*r(t===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&a<c.getMinutes()&&(a=c.getMinutes()),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(n,a,i)}}function _(e){var t=e||w.latestSelectedDateObj;t&&O(t.getHours(),t.getMinutes(),t.getSeconds())}function O(e,t,n){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,t,n||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(t),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(n)))}function F(e){var t=g(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&Q(n)}function A(e,t,n,a){return t instanceof Array?t.forEach((function(t){return A(e,t,n,a)})):e instanceof Array?e.forEach((function(e){return A(e,t,n,a)})):(e.addEventListener(t,n,a),void w._handlers.push({remove:function(){return e.removeEventListener(t,n)}}))}function N(){pe("onChange")}function P(e,t){var n=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate<w.now?w.config.maxDate:w.now),a=w.currentYear,i=w.currentMonth;try{void 0!==n&&(w.currentYear=n.getFullYear(),w.currentMonth=n.getMonth())}catch(e){e.message="Invalid date supplied: "+n,w.config.errorHandler(e)}t&&w.currentYear!==a&&(pe("onYearChange"),K()),!t||w.currentYear===a&&w.currentMonth===i||pe("onMonthChange"),w.redraw()}function Y(e){var t=g(e);~t.className.indexOf("arrow")&&j(e,t.classList.contains("arrowUp")?1:-1)}function j(e,t,n){var a=e&&g(e),i=n||a&&a.parentNode&&a.parentNode.firstChild,o=he("increment");o.delta=t,i&&i.dispatchEvent(o)}function H(e,t,n,a){var i=X(t,!0),o=s("span","flatpickr-day "+e,t.getDate().toString());return o.dateObj=t,o.$i=a,o.setAttribute("aria-label",w.formatDate(t,w.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===M(t,w.now)&&(w.todayDateElem=o,o.classList.add("today"),o.setAttribute("aria-current","date")),i?(o.tabIndex=-1,ve(t)&&(o.classList.add("selected"),w.selectedDateElem=o,"range"===w.config.mode&&(d(o,"startRange",w.selectedDates[0]&&0===M(t,w.selectedDates[0],!0)),d(o,"endRange",w.selectedDates[1]&&0===M(t,w.selectedDates[1],!0)),"nextMonthDay"===e&&o.classList.add("inRange")))):o.classList.add("flatpickr-disabled"),"range"===w.config.mode&&function(e){return!("range"!==w.config.mode||w.selectedDates.length<2)&&(M(e,w.selectedDates[0])>=0&&M(e,w.selectedDates[1])<=0)}(t)&&!ve(t)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&w.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+w.config.getWeek(t)+"</span>"),pe("onDayCreate",o),o}function L(e){e.focus(),"range"===w.config.mode&&ae(e)}function W(e){for(var t=e>0?0:w.config.showMonths-1,n=e>0?w.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&X(c.dateObj))return c}}function R(e,t){var n=ee(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(t>0?1:-1);void 0===a?w._input.focus():n?function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=t>0?w.config.showMonths:-1,i=t>0?1:-1,o=n-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=n-w.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d<c&&d!=(t>0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf("hidden")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return L(s)}w.changeMonth(i),R(W(i),0)}(a,t):L(a)}function B(e,t){for(var n=(new Date(e,t,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((t-1+12)%12,e),i=w.utils.getDaysInMonth(t,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",d=a+1-n,u=0;d<=a;d++,u++)o.appendChild(H(l,new Date(e,t-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(H("",new Date(e,t,d),d,u));for(var f=i+1;f<=42-n&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(H(c,new Date(e,t+1,f%i),f,u));var m=s("div","dayContainer");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<w.config.showMonths;t++){var n=new Date(w.currentYear,w.currentMonth,1);n.setMonth(w.currentMonth+t),e.appendChild(B(n.getFullYear(),n.getMonth()))}w.daysContainer.appendChild(e),w.days=w.daysContainer.firstChild,"range"===w.config.mode&&1===w.selectedDates.length&&ae()}}function K(){if(!(w.config.showMonths>1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&e<w.config.minDate.getMonth())&&!(void 0!==w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()&&e>w.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=s("option","flatpickr-monthDropdown-month");n.value=new Date(w.currentYear,t).getMonth().toString(),n.textContent=h(t,w.config.shorthandCurrentMonth,w.l10n),n.tabIndex=-1,w.currentMonth===t&&(n.selected=!0),w.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=s("div","flatpickr-month"),n=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=s("span","cur-month"):(w.monthsDropdownContainer=s("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),A(w.monthsDropdownContainer,"change",(function(e){var t=g(e),n=parseInt(t.value,10);w.changeMonth(n-w.currentMonth),pe("onMonthChange")})),K(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var t=U();w.yearElements.push(t.yearElement),w.monthElements.push(t.monthElement),w.monthNav.appendChild(t.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var t=s("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(t)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,n=t(w.l10n.weekdays.shorthand);e>0&&e<n.length&&(n=t(n.splice(e,n.length),n.splice(0,e)));for(var a=w.config.showMonths;a--;)w.weekdayContainer.children[a].innerHTML="\n      <span class='flatpickr-weekday'>\n        "+n.join("</span><span class='flatpickr-weekday'>")+"\n      </span>\n      "}}function G(e,t){void 0===t&&(t=!0);var n=t?e:e-w.currentMonth;n<0&&!0===w._hidePrevMonthArrow||n>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=n,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe("onYearChange"),K()),J(),pe("onMonthChange"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var t=g(e),n=V(t),a=t===w.input||t===w.altInput||w.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i="blur"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!n&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&I(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&e<w.config.minDate.getFullYear()||w.config.maxDate&&e>w.config.maxDate.getFullYear())){var t=e,n=w.currentYear!==t;w.currentYear=t||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),n&&(w.redraw(),pe("onYearChange"),K())}}function X(e,t){var n;void 0===t&&(t=!0);var a=w.parseDate(e,void 0,t);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==t?t:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==t?t:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(n=w.config.enable)&&void 0!==n?n:w.config.disable,r=0,l=void 0;r<o.length;r++){if("function"==typeof(l=o[r])&&l(a))return i;if(l instanceof Date&&void 0!==a&&l.getTime()===a.getTime())return i;if("string"==typeof l){var c=w.parseDate(l,void 0,!0);return c&&c.getTime()===a.getTime()?i:!i}if("object"==typeof l&&void 0!==a&&l.from&&l.to&&a.getTime()>=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function ee(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function te(e){!(e.target===w._input)||!(w.selectedDates.length>0||w._input.value.length>0)||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ne(e){var t=g(e),n=w.config.wrap?p.contains(t):t===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!n),o=w.config.inline&&n&&!a;if(13===e.keyCode&&n){if(a)return w.setDate(w._input.value,!0,t===w.altInput?w.config.altFormat:w.config.dateFormat),t.blur();w.open()}else if(V(t)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(t);switch(e.keyCode){case 13:r?(e.preventDefault(),I(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:n&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||n)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==t.$i||t===w.input||t===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):t===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),I(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(t);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(t)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&t===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],S(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],S(),be()}(n||V(t))&&pe("onKeyDown",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),n=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,w.selectedDates[0].getTime()),i=Math.max(t,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;c<i;c+=y)X(new Date(c),!0)||(o=o||c>a&&c<i,c<n&&(!r||c>r)?r=c:c>n&&(!l||c<l)&&(l=c));for(var d=0;d<w.config.showMonths;d++)for(var s=w.daysContainer.children[d],u=function(a,i){var c,d,u,f=s.children[a],m=f.dateObj.getTime(),g=r>0&&m<r||l>0&&m>l;return g?(f.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach((function(e){f.classList.remove(e)})),"continue"):o&&!g?"continue":(["startRange","inRange","endRange","notAllowed"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),n<t&&m===n?f.classList.add("startRange"):n>t&&m===n&&f.classList.add("endRange"),m>=r&&(0===l||m<=l)&&(d=n,u=t,(c=m)>Math.min(d,u)&&c<Math.max(d,u))&&f.classList.add("inRange"))))},f=0,m=s.children.length;f<m;f++)u(f)}}function ie(){!w.isOpen||w.config.static||w.config.inline||ce()}function oe(e){return function(t){var n=w.config["_"+e+"Date"]=w.parseDate(t,w.config.dateFormat),a=w.config["_"+("min"===e?"max":"min")+"Date"];void 0!==n&&(w["min"===e?"minDateHasTime":"maxDateHasTime"]=n.getHours()>0||n.getMinutes()>0||n.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||"min"!==e||_(n),be()),w.daysContainer&&(de(),void 0!==n?w.currentYearElement[e]=n.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function re(){return w.config.wrap?p.querySelector("[data-input]"):p}function le(){"object"!=typeof w.config.locale&&void 0===T.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},T.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?T.l10ns[w.config.locale]:void 0),D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===T.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){pe("onPreCalendarPosition");var t=e||w._positionElement,n=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),c=window.innerHeight-l.bottom,s="above"===o||"below"!==o&&c<n&&l.top>n,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(d(w.calendarContainer,"arrowTop",!s),d(w.calendarContainer,"arrowBottom",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,"arrowLeft",!m&&!g),d(w.calendarContainer,"arrowCenter",m),d(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,t=0;t<document.styleSheets.length;t++){var n=document.styleSheets[t];try{n.cssRules}catch(e){continue}e=n;break}return null!=e?e:(a=document.createElement("style"),document.head.appendChild(a),a.sheet);var a}();if(void 0===D)return;var b=window.document.body.offsetWidth,C=Math.max(0,b/2-a/2),M=D.cssRules.length,y="{left:"+l.left+"px;right:auto;}";d(w.calendarContainer,"rightMost",!1),d(w.calendarContainer,"centerMost",!0),D.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+y,M),w.calendarContainer.style.left=C+"px",w.calendarContainer.style.right="auto"}else w.calendarContainer.style.left="auto",w.calendarContainer.style.right=p+"px";else w.calendarContainer.style.left=f+"px",w.calendarContainer.style.right="auto"}}}else w.config.position(w,e)}function de(){w.config.noCalendar||w.isMobile||(K(),De(),J())}function se(){w._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(w.close,0):w.close()}function ue(e){e.preventDefault(),e.stopPropagation();var t=f(g(e),(function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")}));if(void 0!==t){var n=t,a=w.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()<w.currentMonth||a.getMonth()>w.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=n,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(S(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe("onYearChange"),K()),pe("onMonthChange")}if(De(),J(),be(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(n),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}N()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=A,w._setHoursFromDate=_,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===t&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var n=x(w.config),a=n.hours,i=n.minutes,o=n.seconds;O(a,i,o)}w.redraw(),e&&pe("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));pe("onClose")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,t){void 0===t&&(t=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var n=g(e);n&&n.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),pe("onOpen"),ce(t));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=de,w.set=function(e,t){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=t,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):n.indexOf(e)>-1&&(w.config[e]=c(t));w.redraw(),be(!0)},w.setDate=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(t);me(e,n),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,t),_(),0===w.selectedDates.length&&w.clear(!1);be(t),t&&pe("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,k,$],minDate:[P],maxDate:[P],clickOpens:[function(){!0===w.config.clickOpens?(A(w._input,"focus",w.open),A(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function me(e,t){var n=[];if(e instanceof Array)n=e.map((function(e){return w.parseDate(e,t)}));else if(e instanceof Date||"number"==typeof e)n=[w.parseDate(e,t)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":n=[w.parseDate(e,t)];break;case"multiple":n=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,t)}));break;case"range":n=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,t)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?n:n.filter((function(e){return e instanceof Date&&X(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ge(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,t){if(void 0!==w.config){var n=w.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a<n.length;a++)n[a](w.selectedDates,w.input.value,w,t);"onChange"===e&&(w.input.dispatchEvent(he("change")),w.input.dispatchEvent(he("input")))}}function he(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}function ve(e){for(var t=0;t<w.selectedDates.length;t++)if(0===M(w.selectedDates[t],e))return""+t;return!1}function De(){w.config.noCalendar||w.isMobile||!w.monthNav||(w.yearElements.forEach((function(e,t){var n=new Date(w.currentYear,w.currentMonth,1);n.setMonth(w.currentMonth+t),w.config.showMonths>1||"static"===w.config.monthSelectorType?w.monthElements[t].textContent=h(n.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYear<w.config.minDate.getFullYear()),w._hideNextMonthArrow=void 0!==w.config.maxDate&&(w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth+1>w.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(t){return w.formatDate(t,e)})).filter((function(e,t,n){return"range"!==w.config.mode||w.config.enableTime||n.indexOf(e)===t})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe("onValueUpdate")}function Ce(e){var t=g(e),n=w.prevMonthNav.contains(t),a=w.nextMonthNav.contains(t);n||a?G(n?-1:1):w.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):t.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var t=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=T.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=T.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):d+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:oe("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:oe("max")});var s=function(e){return function(t){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(t,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:s("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:s("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u<t.length;u++)w.config[t[u]]=!0===w.config[t[u]]||"true"===w.config[t[u]];n.filter((function(e){return void 0!==w.config[e]})).forEach((function(e){w.config[e]=c(w.config[e]||[]).map(E)})),w.isMobile=!w.config.disableMobile&&!w.config.inline&&"single"===w.config.mode&&!w.config.disable.length&&!w.config.enable&&!w.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(u=0;u<w.config.plugins.length;u++){var f=w.config.plugins[u](w)||{};for(var m in f)n.indexOf(m)>-1?w.config[m]=c(f[m]).map(E).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+" "+w.config.altInputClass);pe("onParseConfig")}(),le(),function(){if(w.input=re(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");w._positionElement=w.config.positionElement||w._input}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()<w.now.getTime()?w.config.maxDate:w.now,w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth(),w.selectedDates.length>0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=w.currentMonth),void 0===t&&(t=w.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s("div","flatpickr-innerContainer"),w.config.weekNumbers){var t=function(){w.calendarContainer.classList.add("hasWeeks");var e=s("div","flatpickr-weekwrapper");e.appendChild(s("span","flatpickr-weekday",w.l10n.weekAbbreviation));var t=s("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;w.innerContainer.appendChild(n),w.weekNumbers=a,w.weekWrapper=n}w.rContainer=s("div","flatpickr-rContainer"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s("div","flatpickr-days"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=x(w.config);w.timeContainer=s("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var t=s("span","flatpickr-time-separator",":"),n=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(t),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(s("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=s("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());d(w.calendarContainer,"rangeMode","range"===w.config.mode),d(w.calendarContainer,"animate",!0===w.config.animate),d(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(t){return A(t,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=s("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}A(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe("onChange"),pe("onClose")}))}();var e=l(ie,50);w._debouncedChange=l(N,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&A(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&ae(g(e))}));A(window.document.body,"keydown",ne),w.config.inline||w.config.static||A(window,"resize",e);void 0!==window.ontouchstart?A(window.document,"touchstart",Z):A(window.document,"mousedown",Z);A(window.document,"focus",Z,{capture:!0}),!0===w.config.clickOpens&&(A(w._input,"focus",w.open),A(w._input,"click",w.open));void 0!==w.daysContainer&&(A(w.monthNav,"click",Ce),A(w.monthNav,["keyup","increment"],F),A(w.daysContainer,"click",ue));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var t=function(e){return g(e).select()};A(w.timeContainer,["increment"],I),A(w.timeContainer,"blur",I,{capture:!0}),A(w.timeContainer,"click",Y),A([w.hourElement,w.minuteElement],["focus","click"],t),void 0!==w.secondElement&&A(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&A(w.amPM,"click",(function(e){I(e),N()}))}w.config.allowInput&&A(w._input,"blur",te)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&_(w.config.noCalendar?w.latestSelectedDateObj:void 0),be(!1)),k();var t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&t&&ce(),pe("onReady")}(),w}function k(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i<n.length;i++){var o=n[i];try{if(null!==o.getAttribute("data-fp-omit"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=E(o,t||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return k(this,e)},HTMLElement.prototype.flatpickr=function(e){return k([this],e)});var T=function(e,t){return"string"==typeof e?k(window.document.querySelectorAll(e),t):e instanceof Node?k([e],t):k(e,t)};return T.defaultConfig={},T.l10ns={en:e({},i),default:e({},i)},T.localize=function(t){T.l10ns.default=e(e({},T.l10ns.default),t)},T.setDefaults=function(t){T.defaultConfig=e(e({},T.defaultConfig),t)},T.parseDate=C({}),T.formatDate=b({}),T.compareDates=M,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return k(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=T),T}));
(-)a/koha-tmpl/intranet-tmpl/prog/css/src/_flatpickr.scss (+960 lines)
Line 0 Link Here
1
@import "vars";
2
3
@-webkit-keyframes fpFadeInDown {
4
    from {
5
        opacity: 0;
6
        transform: translate3d(0, -20px, 0);
7
    }
8
9
    to {
10
        opacity: 1;
11
        transform: translate3d(0, 0, 0);
12
    }
13
}
14
15
@-moz-keyframes fpFadeInDown {
16
    from {
17
        opacity: 0;
18
        transform: translate3d(0, -20px, 0);
19
    }
20
21
    to {
22
        opacity: 1;
23
        transform: translate3d(0, 0, 0);
24
    }
25
}
26
27
@-ms-keyframes fpFadeInDown {
28
    from {
29
        opacity: 0;
30
        transform: translate3d(0, -20px, 0);
31
    }
32
33
    to {
34
        opacity: 1;
35
        transform: translate3d(0, 0, 0);
36
    }
37
}
38
39
@-o-keyframes fpFadeInDown {
40
    from {
41
        opacity: 0;
42
        transform: translate3d(0, -20px, 0);
43
    }
44
45
    to {
46
        opacity: 1;
47
        transform: translate3d(0, 0, 0);
48
    }
49
}
50
51
@keyframes fpFadeInDown {
52
    from {
53
        opacity: 0;
54
        transform: translate3d(0, -20px, 0);
55
    }
56
57
    to {
58
        opacity: 1;
59
        transform: translate3d(0, 0, 0);
60
    }
61
}
62
63
.flatpickr-calendar {
64
    animation: none;
65
    background: transparent;
66
    border-radius: 5px;
67
    border: 0;
68
    box-sizing: border-box;
69
    direction: ltr;
70
    display: none;
71
    font-size: 14px;
72
    line-height: 24px;
73
    opacity: 0;
74
    padding: 0;
75
    position: absolute;
76
    text-align: center;
77
    touch-action: manipulation;
78
    visibility: hidden;
79
    width: $calendarWidth;
80
81
    @if variable-exists( "noCalendarBorder" ) {
82
        box-shadow: 0 3px 13px rgba(black, 0.08);
83
    }
84
85
    @else {
86
87
        background: $calendarBackground;
88
        box-shadow: 1px 1px 3px 0 #666;
89
    }
90
91
    &.open,
92
    &.inline {
93
        opacity: 1;
94
        max-height: 640px;
95
        visibility: visible;
96
    }
97
98
    &.open {
99
        display: inline-block;
100
        z-index: 99999;
101
    }
102
103
    &.animate.open {
104
        animation: fpFadeInDown 300ms $bezier;
105
    }
106
107
    &.inline {
108
        display: block;
109
        position: relative;
110
        top: 2px;
111
    }
112
113
    &.static {
114
        position: absolute;
115
        top: calc(100% + 2px);
116
117
        &.open {
118
            z-index: 999;
119
            display: block;
120
        }
121
    }
122
123
    &.multiMonth {
124
        .flatpickr-days .dayContainer:nth-child(n+1) {
125
            & .flatpickr-day.inRange:nth-child(7n+7) {
126
                box-shadow: none !important;
127
            }
128
        }
129
130
        .flatpickr-days .dayContainer:nth-child(n+2) {
131
            & .flatpickr-day.inRange:nth-child(7n+1) {
132
                box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
133
            }
134
        }
135
    }
136
137
    .hasWeeks,
138
    .hasTime {
139
        .dayContainer {
140
            border-bottom: 0;
141
            border-bottom-right-radius: 0;
142
            border-bottom-left-radius: 0;
143
        }
144
    }
145
146
    @if variable-exists( "noCalendarBorder" ) {
147
        .hasWeeks .dayContainer {
148
            border-left: 0;
149
        }
150
    }
151
152
    &.hasTime {
153
        .flatpickr-time {
154
            height: $timeHeight;
155
            border-top: 1px solid $calendarBorderColor;
156
        }
157
158
        @if variable-exists( "noCalendarBorder" ) {
159
            .flatpickr-innerContainer {
160
                border-bottom: 0;
161
            }
162
163
            .flatpickr-time {
164
                border: 1px solid $calendarBorderColor;
165
            }
166
        }
167
    }
168
169
    &.noCalendar.hasTime {
170
        .flatpickr-time {
171
            height: auto;
172
        }
173
    }
174
175
    &:before,
176
    &:after {
177
        position: absolute;
178
        display: block;
179
        pointer-events: none;
180
        border: solid transparent;
181
        content: '';
182
        height: 0;
183
        width: 0;
184
        left: 22px;
185
    }
186
187
    &.rightMost,
188
    &.arrowRight {
189
190
        &:before,
191
        &:after {
192
            left: auto;
193
            right: 22px;
194
        }
195
    }
196
197
    &.arrowCenter {
198
199
        &:before,
200
        &:after {
201
            left: 50%;
202
            right: 50%;
203
        }
204
    }
205
206
    &:before {
207
        border-width: 5px;
208
        margin: 0 -5px;
209
    }
210
211
    &:after {
212
        border-width: 4px;
213
        margin: 0 -4px;
214
    }
215
216
    &.arrowTop {
217
218
        &:before,
219
        &:after {
220
            bottom: 100%;
221
        }
222
223
        &:before {
224
            border-bottom-color: $calendarBorderColor;
225
        }
226
227
        &:after {
228
            @if variable-exists( "noCalendarBorder" ) {
229
                border-bottom-color: $monthBackground;
230
            }
231
232
            @else {
233
                border-bottom-color: $calendarBackground;
234
            }
235
        }
236
    }
237
238
    &.arrowBottom {
239
240
        &:before,
241
        &:after {
242
            top: 100%;
243
        }
244
245
        &:before {
246
            border-top-color: $calendarBorderColor;
247
        }
248
249
        &:after {
250
            @if variable-exists( "noCalendarBorder" ) {
251
                border-top-color: $monthBackground;
252
            }
253
254
            @else {
255
                border-top-color: $calendarBackground;
256
            }
257
        }
258
    }
259
260
    &:focus {
261
        outline: 0;
262
    }
263
}
264
265
.flatpickr-wrapper {
266
    position: relative;
267
    display: inline-block;
268
}
269
270
.flatpickr-months {
271
    display: flex;
272
273
    .flatpickr-month {
274
        @if variable-exists( "noCalendarBorder" ) {
275
            border-radius: 5px 5px 0 0;
276
        }
277
278
        background: $monthBackground;
279
        color: $monthForeground;
280
        fill: $monthForeground;
281
        height: $monthNavHeight;
282
        line-height: 1;
283
        text-align: center;
284
        position: relative;
285
        user-select: none;
286
        overflow: hidden;
287
        flex: 1;
288
    }
289
290
    .flatpickr-prev-month,
291
    .flatpickr-next-month {
292
        text-decoration: none;
293
        cursor: pointer;
294
        position: absolute;
295
        top: 0;
296
        height: $monthNavHeight;
297
        padding: 10px;
298
        z-index: 3;
299
        color: $monthForeground;
300
        fill: $monthForeground;
301
302
        &.flatpickr-disabled {
303
            display: none;
304
        }
305
306
        i {
307
            position: relative;
308
        }
309
310
        &.flatpickr-prev-month {
311
            /*!
312
      /*rtl:begin:ignore*/
313
            /*
314
      */
315
            left: 0;
316
            /*!
317
      /*rtl:end:ignore*/
318
            /*
319
      */
320
        }
321
322
        &.flatpickr-next-month {
323
            /*!
324
      /*rtl:begin:ignore*/
325
            /*
326
      */
327
            right: 0;
328
            /*!
329
      /*rtl:end:ignore*/
330
            /*
331
      */
332
        }
333
334
        &:hover {
335
            color: $todayColor;
336
337
            svg {
338
                @if variable-exists( "arrow_hover_color" ){
339
                    fill: $arrow_hover_color;
340
                }
341
342
                @else {
343
344
                    fill: $todayColor;
345
                }
346
            }
347
        }
348
349
        svg {
350
            width: 14px;
351
            height: 14px;
352
353
            path {
354
                transition: fill 0.1s;
355
                fill: inherit;
356
            }
357
        }
358
    }
359
}
360
361
.numInputWrapper {
362
    position: relative;
363
    height: auto;
364
365
    input,
366
    span {
367
        display: inline-block;
368
    }
369
370
    input {
371
        width: 100%;
372
373
        &::-ms-clear {
374
            display: none;
375
        }
376
377
        &::-webkit-outer-spin-button,
378
        &::-webkit-inner-spin-button {
379
            margin: 0;
380
            -webkit-appearance: none;
381
        }
382
    }
383
384
    span {
385
        position: absolute;
386
        right: 0;
387
        width: $timecontrols;
388
        padding: 0 4px 0 2px;
389
        height: 50%;
390
        line-height: 50%;
391
        opacity: 0;
392
        cursor: pointer;
393
        border: 1px solid rgba($dayForeground, 0.15);
394
        box-sizing: border-box;
395
396
        &:hover {
397
            background: rgba($invertedBg, 0.1);
398
        }
399
400
        &:active {
401
            background: rgba($invertedBg, 0.2);
402
        }
403
404
        &:after {
405
            display: block;
406
            content: "";
407
            position: absolute;
408
        }
409
410
        &.arrowUp {
411
            top: 0;
412
            border-bottom: 0;
413
414
            &:after {
415
                border-left: 4px solid transparent;
416
                border-right: 4px solid transparent;
417
                border-bottom: 4px solid rgba($dayForeground, 0.6);
418
                top: 26%;
419
            }
420
        }
421
422
        &.arrowDown {
423
            top: 50%;
424
425
            &:after {
426
                border-left: 4px solid transparent;
427
                border-right: 4px solid transparent;
428
                border-top: 4px solid rgba($dayForeground, 0.6);
429
                top: 40%;
430
            }
431
        }
432
433
        svg {
434
            width: inherit;
435
            height: auto;
436
437
            path {
438
                fill: rgba($monthForeground, 0.5);
439
            }
440
        }
441
    }
442
443
    &:hover {
444
        background: rgba($invertedBg, 0.05);
445
446
        span {
447
            opacity: 1;
448
        }
449
    }
450
}
451
452
.flatpickr-current-month {
453
    font-size: 135%;
454
    line-height: inherit;
455
    font-weight: 300;
456
    color: inherit;
457
    position: absolute;
458
    width: 75%;
459
    left: 12.5%;
460
    padding: 0.22 * $monthNavHeight 0 0 0;
461
    line-height: 1;
462
    height: $monthNavHeight;
463
    display: inline-block;
464
    text-align: center;
465
    transform: translate3d(0px, 0px, 0px);
466
467
    span.cur-month {
468
        font-family: inherit;
469
        font-weight: 700;
470
        color: inherit;
471
        display: inline-block;
472
        margin-left: 0.5ch;
473
        padding: 0;
474
475
        &:hover {
476
            background: rgba($invertedBg, 0.05);
477
        }
478
    }
479
480
    .numInputWrapper {
481
        width: 8ch;
482
        display: inline-block;
483
484
        span.arrowUp:after {
485
            border-bottom-color: $monthForeground;
486
        }
487
488
        span.arrowDown:after {
489
            border-top-color: $monthForeground;
490
        }
491
    }
492
493
    input.cur-year {
494
        background: transparent;
495
        box-sizing: border-box;
496
        color: inherit;
497
        cursor: text;
498
        padding: 0 0 0 0.5ch;
499
        margin: 0;
500
        display: inline-block;
501
        font-size: inherit;
502
        font-family: inherit;
503
        font-weight: 300;
504
        line-height: inherit;
505
        height: auto;
506
        border: 0;
507
        border-radius: 0;
508
        vertical-align: initial;
509
        -webkit-appearance: textfield;
510
        -moz-appearance: textfield;
511
        appearance: textfield;
512
513
        &:focus {
514
            outline: 0;
515
        }
516
517
        &[disabled],
518
        &[disabled]:hover {
519
            font-size: 100%;
520
            color: rgba($monthForeground, 0.5);
521
            background: transparent;
522
            pointer-events: none;
523
        }
524
    }
525
526
    .flatpickr-monthDropdown-months {
527
        appearance: none;
528
        background-image: url('data:image/svg+xml;charset=utf8,%3csvg fill="%23000000" fill-opacity="0.54" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"%3e%3cpath d="M7 10l5 5 5-5z"/%3e%3cpath d="M0 0h24v24H0z" fill="none"/%3e%3c/svg%3e');
529
        background-position: 100% 50%;
530
        background-repeat: no-repeat;
531
        background-size: 24px 24px;
532
        border: none;
533
        border-radius: 0;
534
        box-sizing: border-box;
535
        color: inherit;
536
        cursor: pointer;
537
        font-size: 90%;
538
        font-family: inherit;
539
        font-weight: 300;
540
        height: auto;
541
        line-height: 120%;
542
        margin: -1px 0 0 0;
543
        outline: none;
544
        padding: 4px 28px 4px 4px;
545
        position: relative;
546
        vertical-align: initial;
547
        width: auto;
548
549
        &:focus,
550
        &:active {
551
            outline: none;
552
        }
553
554
        .flatpickr-monthDropdown-month {
555
            background-color: $monthBackground;
556
            outline: none;
557
            padding: 0;
558
        }
559
    }
560
}
561
562
.flatpickr-weekdays {
563
    background: $weekdaysBackground;
564
    text-align: center;
565
    overflow: hidden;
566
    width: 100%;
567
    display: flex;
568
    align-items: center;
569
    height: $weekdaysHeight;
570
571
    .flatpickr-weekdaycontainer {
572
        display: flex;
573
        flex: 1;
574
    }
575
}
576
577
578
579
span.flatpickr-weekday {
580
    cursor: default;
581
    font-size: 90%;
582
    background: $monthBackground;
583
    color: $weekdaysForeground;
584
    line-height: 1;
585
    margin: 0;
586
    text-align: center;
587
    display: block;
588
    flex: 1;
589
    font-weight: bolder;
590
}
591
592
.dayContainer,
593
.flatpickr-weeks {
594
    padding: 1px 0 0 0;
595
}
596
597
.flatpickr-days {
598
    position: relative;
599
    overflow: hidden;
600
    display: flex;
601
    align-items: flex-start;
602
    width: $daysWidth;
603
604
    &:focus {
605
        outline: 0;
606
    }
607
608
    @if variable-exists( "noCalendarBorder" ) {
609
        border-left: 1px solid $calendarBorderColor;
610
        border-right: 1px solid $calendarBorderColor;
611
    }
612
}
613
614
.dayContainer {
615
    padding: 0;
616
    outline: 0;
617
    text-align: left;
618
    width: $daysWidth;
619
    min-width: $daysWidth;
620
    max-width: $daysWidth;
621
    box-sizing: border-box;
622
    display: inline-block;
623
    display: -ms-flexbox;
624
    display: flex;
625
    flex-wrap: wrap;
626
    -ms-flex-wrap: wrap;
627
    -ms-flex-pack: justify;
628
    justify-content: space-around;
629
    transform: translate3d(0px, 0px, 0px);
630
    opacity: 1;
631
632
    &+.dayContainer {
633
        box-shadow: -1px 0 0 $calendarBorderColor;
634
    }
635
}
636
637
.flatpickr-day {
638
    background: none;
639
    border: 1px solid transparent;
640
    border-radius: 150px;
641
    box-sizing: border-box;
642
    color: $dayForeground;
643
    cursor: pointer;
644
645
    font-weight: 400;
646
    width: 14.2857143%;
647
    flex-basis: 14.2857143%;
648
    max-width: $daySize;
649
    height: $daySize;
650
    line-height: $daySize;
651
    margin: 0;
652
653
    display: inline-block;
654
    position: relative;
655
    justify-content: center;
656
    text-align: center;
657
658
    &,
659
    &.prevMonthDay,
660
    &.nextMonthDay {
661
662
        &.inRange,
663
        &.today.inRange,
664
        &:hover,
665
        &:focus {
666
            cursor: pointer;
667
            outline: 0;
668
            background: $dayHoverBackground;
669
            border-color: $dayHoverBackground;
670
        }
671
    }
672
673
    &.today {
674
        border-color: $todayColor;
675
676
        &:hover,
677
        &:focus {
678
            border-color: $todayColor;
679
            background: $todayColor;
680
681
            @if variable-exists( "today_fg_color" ){
682
                color: $today_fg_color;
683
            }
684
685
            @else {
686
                color: white;
687
            }
688
        }
689
    }
690
691
    &.selected,
692
    &.startRange,
693
    &.endRange {
694
695
        &,
696
        &.inRange,
697
        &:focus,
698
        &:hover,
699
        &.prevMonthDay,
700
        &.nextMonthDay {
701
            background: $selectedDayBackground;
702
            box-shadow: none;
703
704
            @if variable-exists( "selectedDayForeground" ){
705
                color: $selectedDayForeground;
706
            }
707
708
            @else {
709
                color: white;
710
            }
711
712
            border-color: $selectedDayBackground;
713
        }
714
715
        &.startRange {
716
            border-radius: 50px 0 0 50px;
717
        }
718
719
        &.endRange {
720
            border-radius: 0 50px 50px 0;
721
        }
722
723
        &.startRange+.endRange:not(:nth-child(7n+1)) {
724
            box-shadow: -5 * $dayMargin 0 0 $selectedDayBackground;
725
        }
726
727
        &.startRange.endRange {
728
            border-radius: 50px;
729
        }
730
    }
731
732
    &.inRange {
733
        border-radius: 0;
734
        box-shadow: -2.5 * $dayMargin 0 0 $dayHoverBackground, 2.5 * $dayMargin 0 0 $dayHoverBackground;
735
    }
736
737
    &.flatpickr-disabled,
738
    &.flatpickr-disabled:hover,
739
    &.prevMonthDay,
740
    &.nextMonthDay,
741
    &.notAllowed,
742
    &.notAllowed.prevMonthDay,
743
    &.notAllowed.nextMonthDay {
744
        color: rgba($dayForeground, 0.3);
745
        background: transparent;
746
747
        @if variable-exists( "disabled_border_color" ){
748
            border-color: $disabled_border_color;
749
        }
750
751
        @else {
752
753
            border-color: transparent;
754
        }
755
756
        cursor: default;
757
    }
758
759
    &.flatpickr-disabled,
760
    &.flatpickr-disabled:hover {
761
        cursor: not-allowed;
762
        color: rgba($dayForeground, 0.1);
763
    }
764
765
    &.week.selected {
766
        border-radius: 0;
767
        box-shadow: -2.5 * $dayMargin 0 0 $selectedDayBackground, 2.5 * $dayMargin 0 0 $selectedDayBackground;
768
    }
769
770
    &.hidden {
771
        visibility: hidden;
772
    }
773
}
774
775
.rangeMode .flatpickr-day {
776
    margin-top: 1px;
777
}
778
779
.flatpickr-weekwrapper {
780
    float: left;
781
782
    .flatpickr-weeks {
783
        padding: 0 12px;
784
785
        @if variable-exists( "noCalendarBorder" ) {
786
            border-left: 1px solid $calendarBorderColor;
787
        }
788
789
        @else {
790
            box-shadow: 1px 0 0 $calendarBorderColor;
791
        }
792
    }
793
794
    .flatpickr-weekday {
795
        float: none;
796
        width: 100%;
797
        line-height: $weekdaysHeight;
798
    }
799
800
    span.flatpickr-day {
801
802
        &,
803
        &:hover {
804
            display: block;
805
            width: 100%;
806
            max-width: none;
807
            color: rgba($dayForeground, 0.3);
808
            background: transparent;
809
            cursor: default;
810
            border: none;
811
        }
812
    }
813
}
814
815
.flatpickr-innerContainer {
816
    display: block;
817
    display: flex;
818
    box-sizing: border-box;
819
    overflow: hidden;
820
821
    @if variable-exists( "noCalendarBorder" ) {
822
        background: $calendarBackground;
823
        border-bottom: 1px solid $calendarBorderColor;
824
    }
825
}
826
827
.flatpickr-rContainer {
828
    display: inline-block;
829
    padding: 0;
830
    box-sizing: border-box;
831
}
832
833
.flatpickr-time {
834
    text-align: center;
835
    outline: 0;
836
    display: block;
837
    height: 0;
838
    line-height: $timeHeight;
839
    max-height: $timeHeight;
840
    box-sizing: border-box;
841
    overflow: hidden;
842
    display: flex;
843
844
    @if variable-exists( "noCalendarBorder" ) {
845
        background: $calendarBackground;
846
        border-radius: 0 0 5px 5px;
847
    }
848
849
    &:after {
850
        content: "";
851
        display: table;
852
        clear: both;
853
    }
854
855
    .numInputWrapper {
856
        flex: 1;
857
        width: 40%;
858
        height: $timeHeight;
859
        float: left;
860
861
        span.arrowUp:after {
862
            border-bottom-color: $dayForeground;
863
        }
864
865
        span.arrowDown:after {
866
            border-top-color: $dayForeground;
867
        }
868
    }
869
870
    &.hasSeconds .numInputWrapper {
871
        width: 26%;
872
    }
873
874
    &.time24hr .numInputWrapper {
875
        width: 49%;
876
    }
877
878
    input {
879
        background: transparent;
880
        box-shadow: none;
881
        border: 0;
882
        border-radius: 0;
883
        text-align: center;
884
        margin: 0;
885
        padding: 0;
886
        height: inherit;
887
        line-height: inherit;
888
        color: $dayForeground;
889
        font-size: 14px;
890
        position: relative;
891
        box-sizing: border-box;
892
        -webkit-appearance: textfield;
893
        -moz-appearance: textfield;
894
        appearance: textfield;
895
896
        &.flatpickr-hour {
897
            font-weight: bold;
898
        }
899
900
        &.flatpickr-minute,
901
        &.flatpickr-second {
902
            font-weight: 400;
903
        }
904
905
        &:focus {
906
            outline: 0;
907
            border: 0;
908
        }
909
    }
910
911
    .flatpickr-time-separator,
912
    .flatpickr-am-pm {
913
        height: inherit;
914
        float: left;
915
        line-height: inherit;
916
        color: $dayForeground;
917
        font-weight: bold;
918
        width: 2%;
919
        user-select: none;
920
        align-self: center;
921
    }
922
923
    .flatpickr-am-pm {
924
        outline: 0;
925
        width: 18%;
926
        cursor: pointer;
927
        text-align: center;
928
        font-weight: 400;
929
    }
930
931
    input,
932
    .flatpickr-am-pm {
933
934
        &:hover,
935
        &:focus {
936
            background: lighten($dayHoverBackground, 3);
937
        }
938
    }
939
}
940
941
.flatpickr-input {
942
    background-repeat: no-repeat;
943
    background-position: 3px;
944
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='#369' class='bi bi-calendar3'%3E%3Cg stroke-width='1.333'%3E%3Cpath d='M10.5 0h-9A1.5 1.5 0 0 0 0 1.5v9A1.5 1.5 0 0 0 1.5 12h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 10.5 0zM.75 2.893c0-.355.336-.643.75-.643h9c.414 0 .75.288.75.643v7.714c0 .355-.336.643-.75.643h-9c-.414 0-.75-.288-.75-.643z'/%3E%3Cpath d='M4.875 5.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zM2.625 7.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm-6.75 2.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm2.25 0a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5z'/%3E%3C/g%3E%3C/svg%3E");
945
    border-style: inset;
946
    border-width: 1px;
947
    padding: 3px 3px 3px 20px;
948
949
    &:focus {
950
        border-radius: 0;
951
    }
952
953
    &[readonly] {
954
        cursor: pointer;
955
    }
956
}
957
958
.flatpickr-day {
959
    border-radius: 0;
960
}
(-)a/koha-tmpl/intranet-tmpl/prog/css/src/_vars.scss (+37 lines)
Line 0 Link Here
1
$bezier: cubic-bezier(0.23, 1, 0.32, 1);
2
$slideTime: 400ms;
3
4
5
$daySize: 39px;
6
$padding: $daySize / 16;
7
$dayMargin: 2px;
8
$daysWidth: $daySize * 7 + $dayMargin * 14 + $padding * 2 + 2;
9
$calendarWidth: $daysWidth;
10
11
$monthNavHeight: 34px !default;
12
$weekdaysHeight: 28px !default;
13
$timeHeight: 40px;
14
15
16
17
$calendarBackground: #ffffff !default;
18
$calendarBorderColor: #e6e6e6 !default;
19
20
$monthForeground: rgba(black, 0.9) !default;
21
$arrow_hover_color: #f64747 !default;
22
23
$monthBackground: transparent !default;
24
25
$weekdaysBackground: transparent !default;
26
$weekdaysForeground: rgba(black, 0.54) !default;
27
28
$dayForeground: #000 !default;
29
$dayHoverBackground: #e6e6e6 !default;
30
31
$todayColor: #538200 !default;
32
$selectedDayBackground: #FFF4C6 !default;
33
$selectedDayForeground: #000;
34
35
$invertedBg: invert($calendarBackground);
36
37
$timecontrols: 25px;
(-)a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss (-4 / +10 lines)
Lines 1-5 Link Here
1
@import "mixins";
1
@import "mixins";
2
@import "tables";
2
@import "tables";
3
@import "flatpickr";
3
4
4
::selection {
5
::selection {
5
    background: #538200;
6
    background: #538200;
Lines 54-59 a { Link Here
54
        padding: 0;
55
        padding: 0;
55
    }
56
    }
56
57
58
    &.clear_date {
59
        color: #C33;
60
        font-size: 130%;
61
    }
62
57
    &.close {
63
    &.close {
58
        &:hover {
64
        &:hover {
59
            color: #538200;
65
            color: #538200;
Lines 1803-1808 i { Link Here
1803
        &[type="submit"] {
1809
        &[type="submit"] {
1804
            background: #FFF none;
1810
            background: #FFF none;
1805
        }
1811
        }
1812
1813
        &.flatpickr-input {
1814
            padding: 3px 3px 3px 20px;
1815
        }
1806
    }
1816
    }
1807
1817
1808
    li {
1818
    li {
Lines 3755-3764 input.renew { Link Here
3755
    padding: .5em;
3765
    padding: .5em;
3756
}
3766
}
3757
3767
3758
.dialog input#renewonholdduedate {
3759
    padding: 2px;
3760
}
3761
3762
.date-select {
3768
.date-select {
3763
    label {
3769
    label {
3764
        display: inline-block;
3770
        display: inline-block;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc (+37 lines)
Lines 2-14 Link Here
2
[% USE Koha %]
2
[% USE Koha %]
3
[% USE raw %]
3
[% USE raw %]
4
<!-- calendar.inc -->
4
<!-- calendar.inc -->
5
[% FILTER collapse %]
5
<script>
6
<script>
6
    var debug    = "[% debug | html %]";
7
    var debug    = "[% debug | html %]";
7
    var dateformat_pref = "[% Koha.Preference('dateformat ') | html %]";
8
    var dateformat_pref = "[% Koha.Preference('dateformat ') | html %]";
8
    var dateformat_string = [% IF ( dateformat == "us" ) %]"mm/dd/yy"[% ELSIF ( dateformat == "metric" ) %]"dd/mm/yy"[% ELSIF ( dateformat == "dmydot" ) %]"dd.mm.yy"[% ELSE %]"yy-mm-dd"[% END %];
9
    var dateformat_string = [% IF ( dateformat == "us" ) %]"mm/dd/yy"[% ELSIF ( dateformat == "metric" ) %]"dd/mm/yy"[% ELSIF ( dateformat == "dmydot" ) %]"dd.mm.yy"[% ELSE %]"yy-mm-dd"[% END %];
10
    var flatpickr_dateformat_string = [% IF ( dateformat == "us" ) %]"m/d/Y"[% ELSIF ( dateformat == "metric" ) %]"d/m/Y"[% ELSIF ( dateformat == "dmydot" ) %]"d.m.Y"[% ELSE %]"Y-m-d"[% END %];
9
    var sentmsg = 0;
11
    var sentmsg = 0;
10
    var bidi = [% IF(bidi) %] true[% ELSE %] false[% END %];
12
    var bidi = [% IF(bidi) %] true[% ELSE %] false[% END %];
11
    var calendarFirstDayOfWeek = '[% Koha.Preference('CalendarFirstDayOfWeek') | html %]';
13
    var calendarFirstDayOfWeek = '[% Koha.Preference('CalendarFirstDayOfWeek') | html %]';
14
    var flatpickr_timeformat_string = [% IF Koha.Preference('TimeFormat') == '12hr' %]"h:i K"[% ELSE %]"H:i"[% END %];
15
    var flatpickr_timeformat = [% IF Koha.Preference('TimeFormat') == '12hr' %]false[% ELSE %]true[% END %];
12
</script>
16
</script>
13
<!-- / calendar.inc -->
17
<!-- / calendar.inc -->
14
[% Asset.js("js/calendar.js") | $raw %]
18
[% Asset.js("js/calendar.js") | $raw %]
19
[% Asset.js("lib/flatpickr/flatpickr.min.js") | $raw %]
20
<script>
21
    flatpickr.l10ns.default.weekdays = flatpickr_weekdays;
22
    flatpickr.l10ns.default.months   = flatpickr_months;
23
    flatpickr.setDefaults({
24
        allowInput: true,
25
        dateFormat: flatpickr_dateformat_string,
26
        nextArrow: '<i class="fa fa-fw fa-arrow-right"></i>',
27
        prevArrow: '<i class="fa fa-fw fa-arrow-left"></i>',
28
        time_24hr: flatpickr_timeformat,
29
        locale: {
30
            "firstDayOfWeek": calendarFirstDayOfWeek
31
        },
32
        onReady: function( selectedDates, dateStr, instance ){
33
            /* When flatpickr instance is created, automatically append a "clear date" link */
34
            $(instance.input)
35
                .after( $("<a/>")
36
                    .attr("href","#")
37
                    .addClass("clear_date")
38
                    .on("click", function(){
39
                        instance.clear();
40
                    })
41
                    .addClass("fa fa-fw fa-remove")
42
                    .attr("aria-hidden", true)
43
                    .attr("aria-label", _("Clear date") )
44
                );
45
        },
46
        onClose: function( selectedDates, dateText, instance) {
47
            validate_date( selectedDates, instance );
48
        },
49
    });
50
</script>
51
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt (+1 lines)
Lines 683-688 Link Here
683
[% MACRO jsinclude BLOCK %]
683
[% MACRO jsinclude BLOCK %]
684
    [% Asset.js("js/admin-menu.js") | $raw %]
684
    [% Asset.js("js/admin-menu.js") | $raw %]
685
    [% Asset.js("js/messaging-preference-form.js") | $raw %]
685
    [% Asset.js("js/messaging-preference-form.js") | $raw %]
686
    [% Asset.js("lib/flatpickr/flatpickr.min.js") | $raw %]
686
    [% INCLUDE 'calendar.inc' %]
687
    [% INCLUDE 'calendar.inc' %]
687
    [% INCLUDE 'datatables.inc' %]
688
    [% INCLUDE 'datatables.inc' %]
688
    [% INCLUDE 'columns_settings.inc' %]
689
    [% INCLUDE 'columns_settings.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt (-27 / +8 lines)
Lines 147-153 Link Here
147
                                    <input type="hidden" name="override_limit" value="1" />
147
                                    <input type="hidden" name="override_limit" value="1" />
148
                                    <input type="hidden" name="override_holds" value="1" />
148
                                    <input type="hidden" name="override_holds" value="1" />
149
                                    <div>
149
                                    <div>
150
                                        <label for="renewonholdduedate">Renewal due date:</label> <input type="text" size="12" id="renewonholdduedate" name="renewonholdduedate" value="" />
150
                                        <label for="renewonholdduedate">Renewal due date:</label> <input type="text" size="20" id="renewonholdduedate" name="renewonholdduedate" value="" />
151
                                    </div>
151
                                    </div>
152
                                    <button type="submit" class="approve"><i class="fa fa-check"></i> Override and renew</button>
152
                                    <button type="submit" class="approve"><i class="fa fa-check"></i> Override and renew</button>
153
                                </form>
153
                                </form>
Lines 220-226 Link Here
220
                            <div class="date-select" id="renew_date_override_fields">
220
                            <div class="date-select" id="renew_date_override_fields">
221
                                <div><label for="hard_due_date" class="hint">Renewal due date [% INCLUDE 'date-format.inc' %]:</label></div>
221
                                <div><label for="hard_due_date" class="hint">Renewal due date [% INCLUDE 'date-format.inc' %]:</label></div>
222
                                <input type="text" size="20" id="hard_due_date" name="hard_due_date" value="[% hard_due_date | $KohaDates with_hours => 1 %]" />
222
                                <input type="text" size="20" id="hard_due_date" name="hard_due_date" value="[% hard_due_date | $KohaDates with_hours => 1 %]" />
223
                                <button type="button" class="action btn btn-default btn-xs" id="cleardate" name="cleardate">Clear</button>
224
                            </div> <!-- /.date-select -->
223
                            </div> <!-- /.date-select -->
225
                        </div>
224
                        </div>
226
                    </fieldset>
225
                    </fieldset>
Lines 245-252 Link Here
245
244
246
[% MACRO jsinclude BLOCK %]
245
[% MACRO jsinclude BLOCK %]
247
    [% INCLUDE 'calendar.inc' %]
246
    [% INCLUDE 'calendar.inc' %]
248
    [% Asset.js("lib/jquery/plugins/jquery-ui-timepicker-addon.min.js") | $raw %]
249
    [% INCLUDE 'timepicker.inc' %]
250
    [% IF error %]
247
    [% IF error %]
251
        <script>
248
        <script>
252
            $( document ).ready(function() {
249
            $( document ).ready(function() {
Lines 256-289 Link Here
256
    [% END %]
253
    [% END %]
257
    <script>
254
    <script>
258
        $( document ).ready(function() {
255
        $( document ).ready(function() {
259
            $("#renewonholdduedate").datetimepicker({
256
            var renewonholdduedate = $("#renewonholdduedate").flatpickr({
260
                onClose: function(dateText, inst) {
257
                enableTime: true,
261
                    validate_date(dateText, inst);
258
                dateFormat: flatpickr_dateformat_string + " " + flatpickr_timeformat_string,
262
                },
259
                minDate: new Date().fp_incr(1)
263
                minDate: 1, // require that renewal date is after today
264
                hour: 23,
265
                minute: 59
266
            }).on('change', function(e) {
267
                if ( ! is_valid_date( $(this).val() ) ) {$(this).val('');}
268
            });
260
            });
269
261
270
            [% IF Koha.Preference('SpecifyDueDate') %]
262
            [% IF Koha.Preference('SpecifyDueDate') %]
271
                $("#hard_due_date").datetimepicker({
263
                var hard_due_date = $("#hard_due_date").flatpickr({
272
                    onClose: function(dateText, inst) {
264
                    enableTime: true,
273
                        validate_date(dateText, inst);
265
                    dateFormat: flatpickr_dateformat_string + " " + flatpickr_timeformat_string,
274
                    },
275
                    hour: 23,
276
                    minute: 59
277
                }).on("change", function(e, value) {
278
                    if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
279
                });
280
                $("#cleardate").on("click",function(e){
281
                    e.preventDefault();
282
                    this.form.hard_due_date.value = '';
283
                    this.form.barcode.focus();
284
                });
266
                });
285
            [% END %]
267
            [% END %]
286
287
        });
268
        });
288
    </script>
269
    </script>
289
[% END %]
270
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt (-6 / +23 lines)
Lines 1-5 Link Here
1
[% USE Branches %]
1
[% USE Branches %]
2
[% USE Koha %]
2
[% USE Koha %]
3
[% USE Asset %]
3
[% SET footerjs = 1 %]
4
[% SET footerjs = 1 %]
4
[% INCLUDE 'doc-head-open.inc' %]
5
[% INCLUDE 'doc-head-open.inc' %]
5
<title>[% IF ( do_it ) %]Patrons statistics &rsaquo; Results[% ELSE %]Patrons statistics[% END %] &rsaquo; Reports &rsaquo; Koha</title>
6
<title>[% IF ( do_it ) %]Patrons statistics &rsaquo; Results[% ELSE %]Patrons statistics[% END %] &rsaquo; Reports &rsaquo; Koha</title>
Lines 176-188 Link Here
176
			</td>
177
			</td>
177
			</tr>
178
			</tr>
178
		    <tr>
179
		    <tr>
179
            <td>Date of birth</td>
180
                <td>Date of birth</td>
180
            <td colspan="2"></td>
181
                <td colspan="2"></td>
181
                <td><label for="from">From</label> <input type="text" size="10" id="from" name="Filter" class="datepickerfrom" />
182
                <td>
182
                    <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" class="datepickerto" />
183
                    <label for="from">From</label>
184
                    <input type="text" size="10" id="from" name="Filter" class="" />
185
                    <label for="to">To</label>
186
                    <input size="10" id="to" name="Filter" value="" type="text" class="" />
183
                    <span class="hint">[% INCLUDE 'date-format.inc' %]</span>
187
                    <span class="hint">[% INCLUDE 'date-format.inc' %]</span>
184
                    </td>
188
                </td>
185
                </tr>
189
            </tr>
186
            <tr>
190
            <tr>
187
                <td>Gender</td>
191
                <td>Gender</td>
188
                <td><input type="radio" name="Line" value="sex" /></td>
192
                <td><input type="radio" name="Line" value="sex" /></td>
Lines 326-331 Link Here
326
330
327
[% MACRO jsinclude BLOCK %]
331
[% MACRO jsinclude BLOCK %]
328
    [% INCLUDE 'calendar.inc' %]
332
    [% INCLUDE 'calendar.inc' %]
333
    <script>
334
        var startPicker = $("#from").flatpickr({
335
            onClose: function( selectedDates, dateText, instance) {
336
                validate_date( selectedDates, instance );
337
                endPicker.set('minDate', selectedDates[0]);
338
            }
339
        });
340
        var endPicker = $("#to").flatpickr({
341
            onClose: function( selectedDates, dateText, instance) {
342
                validate_date( selectedDates, instance );
343
            },
344
        });
345
    </script>
329
[% END %]
346
[% END %]
330
347
331
[% INCLUDE 'intranet-bottom.inc' %]
348
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/calendar.js (-4 / +13 lines)
Lines 1-5 Link Here
1
/* global debug sentmsg __ dateformat_pref dateformat_string bidi calendarFirstDayOfWeek */
1
/* global debug sentmsg __ dateformat_pref dateformat_string bidi calendarFirstDayOfWeek */
2
/* exported DateTime_from_syspref */
2
/* exported DateTime_from_syspref flatpickr_weekdays flatpickr_months */
3
var MSG_PLEASE_ENTER_A_VALID_DATE = ( __("Please enter a valid date (should match %s).") );
3
var MSG_PLEASE_ENTER_A_VALID_DATE = ( __("Please enter a valid date (should match %s).") );
4
if (debug > 1) {
4
if (debug > 1) {
5
    alert("dateformat: " + dateformat_pref + "\ndebug is on (level " + debug + ")");
5
    alert("dateformat: " + dateformat_pref + "\ndebug is on (level " + debug + ")");
Lines 8-14 if (debug > 1) { Link Here
8
function is_valid_date(date) {
8
function is_valid_date(date) {
9
    // An empty string is considered as a valid date for convenient reasons.
9
    // An empty string is considered as a valid date for convenient reasons.
10
    if (date === '') return 1;
10
    if (date === '') return 1;
11
12
    var dateformat = dateformat_string;
11
    var dateformat = dateformat_string;
13
    if (dateformat == 'us') {
12
    if (dateformat == 'us') {
14
        if (date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1) return 0;
13
        if (date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1) return 0;
Lines 24-30 function is_valid_date(date) { Link Here
24
        dateformat = 'dd.mm.yy';
23
        dateformat = 'dd.mm.yy';
25
    }
24
    }
26
    try {
25
    try {
27
        $.datepicker.parseDate(dateformat, date);
26
        flatpickr.parseDate(date, dateformat);
28
    } catch (e) {
27
    } catch (e) {
29
        return 0;
28
        return 0;
30
    }
29
    }
Lines 49-55 function validate_date(dateText, inst) { Link Here
49
    if (!is_valid_date(dateText)) {
48
    if (!is_valid_date(dateText)) {
50
        var dateformat_str = get_dateformat_str( dateformat_pref );
49
        var dateformat_str = get_dateformat_str( dateformat_pref );
51
        alert(MSG_PLEASE_ENTER_A_VALID_DATE.format(dateformat_str));
50
        alert(MSG_PLEASE_ENTER_A_VALID_DATE.format(dateformat_str));
52
        $('#' + inst.id).val('');
51
        inst.clear();
53
    }
52
    }
54
}
53
}
55
54
Lines 162-167 jQuery.validator.addMethod("date_on_or_after", Link Here
162
        return to >= from;
161
        return to >= from;
163
    });
162
    });
164
163
164
var flatpickr_weekdays = {
165
    shorthand: [ __("Sun"), __("Mon"), __("Tue"), __("Wed"), __("Thu"), __("Fri"), __("Sat")],
166
    longhand: [ __("Sunday"), __("Monday"), __("Tuesday"), __("Wednesday"), __("Thursday"), __("Friday"), __("Saturday") ]
167
};
168
169
var flatpickr_months = {
170
    shorthand: [ __("Jan"), __("Feb"), __("Mar"), __("Apr"), __("May"), __("Jun"), __("Jul"), __("Aug"), __("Sep"), __("Oct"), __("Nov"), __("Dec")],
171
    longhand: [ __("January"), __("February"), __("March"), __("April"), __("May"), __("June"), __("July"), __("August"), __("September"), __("October"), __("November"), __("December")]
172
};
173
165
$(document).ready(function () {
174
$(document).ready(function () {
166
175
167
    $.datepicker.setDefaults({
176
    $.datepicker.setDefaults({
(-)a/koha-tmpl/intranet-tmpl/prog/js/categories.js (-4 / +4 lines)
Lines 21-26 jQuery.validator.addMethod( "enrollment_period", function(){ Link Here
21
    }, __("Please choose an enrollment period in months OR by date.")
21
    }, __("Please choose an enrollment period in months OR by date.")
22
);
22
);
23
23
24
flatpickr.l10ns.default.firstDayOfWeek = calendarFirstDayOfWeek;
24
25
25
$(document).ready(function() {
26
$(document).ready(function() {
26
    KohaTable("patron_categories", {
27
    KohaTable("patron_categories", {
Lines 39-47 $(document).ready(function() { Link Here
39
        "exportColumns": [0,1,2,3,4,5,6,7,8,9,10,11,12],
40
        "exportColumns": [0,1,2,3,4,5,6,7,8,9,10,11,12],
40
    }, columns_settings);
41
    }, columns_settings);
41
42
42
    $("#enrolmentperioddate").datepicker({
43
    $("#enrolmentperioddate").flatpickr({
43
        minDate: 1
44
        minDate: new Date().fp_incr(1)
44
    }); // Require that "until date" be in the future
45
    });
45
46
46
    if ($("#branches option:selected").length < 1) {
47
    if ($("#branches option:selected").length < 1) {
47
        $("#branches option:first").attr("selected", "selected");
48
        $("#branches option:first").attr("selected", "selected");
48
- 

Return to bug 28376