timepicker 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function l(e,t){var i;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return a(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,l=!0,o=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,s=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw s}}}}var o=86400;function u(e,t){return e==o&&t.show2400?e:e%o}var c,m={appendTo:"body",className:null,closeOnWindow:!1,closeOnScroll:!1,disableTextInput:!1,disableTimeRanges:[],disableTouchKeyboard:!1,durationTime:null,forceRoundTime:!1,lang:{},listWidth:null,maxTime:null,minTime:null,noneOption:!1,orientation:"l",roundingFunction:function(e,t){if(null===e)return null;for(var i=0,n=0;n<e;)i++,n+=60*t.step(i);var r=n-60*t.step(i-1);return u(e-r<n-e?r:n,t)},scrollDefault:null,selectOnBlur:!1,show2400:!1,showDuration:!1,showOn:["click","focus"],step:30,stopScrollPropagation:!1,timeFormat:"g:ia",typeaheadHighlight:!0,useSelect:!1,wrapHours:!0},d={am:"am",pm:"pm",AM:"AM",PM:"PM",decimal:".",mins:"mins",hr:"hr",hrs:"hrs"},f={bubbles:!0,cancelable:!1,detail:null},p=function(){function n(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,n),this._handleFormatValue=this._handleFormatValue.bind(this),this._handleKeyUp=this._handleKeyUp.bind(this),this.targetEl=e;var r=n.extractAttrOptions(e,Object.keys(m));this.settings=this.parseSettings(s(s(s({},m),i),r))}var r,a,u;return r=n,u=[{key:"extractAttrOptions",value:function(e,t){var i,n={},r=l(t);try{for(r.s();!(i=r.n()).done;){var s=i.value;s in e.dataset&&(n[s]=e.dataset[s])}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"isVisible",value:function(e){var t=e[0];return t.offsetWidth>0&&t.offsetHeight>0}},{key:"hideAll",value:function(){var e,t=l(document.getElementsByClassName("ui-timepicker-input"));try{for(t.s();!(e=t.n()).done;){var i=e.value.timepickerObj;i&&i.hideMe()}}catch(e){t.e(e)}finally{t.f()}}}],(a=[{key:"hideMe",value:function(){if(this.settings.useSelect)this.targetEl.blur();else if(this.list&&n.isVisible(this.list)){this.settings.selectOnBlur&&this._selectValue(),this.list.hide();var e=new CustomEvent("hideTimepicker",f);this.targetEl.dispatchEvent(e)}}},{key:"_findRow",value:function(e){if(!e&&0!==e)return!1;var t=!1;return e=this.settings.roundingFunction(e,this.settings),!!this.list&&(this.list.find("li").each((function(i,n){var r=parseInt(n.dataset.time);if(!isNaN(r))return r==e?(t=n,!1):void 0})),t)}},{key:"_hideKeyboard",value:function(){return(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.settings.disableTouchKeyboard}},{key:"_setTimeValue",value:function(e,t){if("INPUT"===this.targetEl.nodeName){null===e&&""==this.targetEl.value||(this.targetEl.value=e);var i=this;i.settings.useSelect&&"select"!=t&&i.list&&i.list.val(i._roundAndFormatTime(i.anytime2int(e)))}var n=new CustomEvent("selectTime",f);if(this.selectedValue!=e){this.selectedValue=e;var r=new CustomEvent("changeTime",f),s=new CustomEvent("change",Object.assign(f,{detail:"timepicker"}));return"select"==t?(this.targetEl.dispatchEvent(n),this.targetEl.dispatchEvent(r),this.targetEl.dispatchEvent(s)):-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(r),!0}return-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(n),!1}},{key:"_getTimeValue",value:function(){return"INPUT"===this.targetEl.nodeName?this.targetEl.value:this.selectedValue}},{key:"_selectValue",value:function(){var e=this;e.settings;var t=e.list.find(".ui-timepicker-selected");if(t.hasClass("ui-timepicker-disabled"))return!1;if(!t.length)return!0;var i=t.get(0).dataset.time;if(i){var n=parseInt(i);isNaN(n)||(i=n)}return null!==i&&("string"!=typeof i&&(i=e._int2time(i)),e._setTimeValue(i,"select")),!0}},{key:"anytime2int",value:function(t){return"number"==typeof t?t:"string"==typeof t?this.time2int(t):"object"===e(t)&&t instanceof Date?3600*t.getHours()+60*t.getMinutes()+t.getSeconds():"function"==typeof t?t():null}},{key:"time2int",value:function(e){if(""===e||null==e)return null;if("now"===e)return this.anytime2int(new Date);if("string"!=typeof e)return e;"a"!=(e=e.toLowerCase().replace(/[\s\.]/g,"")).slice(-1)&&"p"!=e.slice(-1)||(e+="m");var t=/^(([^0-9]*))?([0-9]?[0-9])(([0-5][0-9]))?(([0-5][0-9]))?(([^0-9]*))$/;e.match(/\W/)&&(t=/^(([^0-9]*))?([0-9]?[0-9])(\W+([0-5][0-9]?))?(\W+([0-5][0-9]))?(([^0-9]*))$/);var i=e.match(t);if(!i)return null;var n=parseInt(1*i[3],10),r=i[2]||i[9],s=this.parseMinuteString(i[5]),a=1*i[7]||0;r||2!=i[3].length||"0"!=i[3][0]||(r="am"),n>24&&!s&&(n=1*i[3][0],s=this.parseMinuteString(i[3][1]));var l=n;if(n<=12&&r){var u=(r=r.trim())==this.settings.lang.pm||r==this.settings.lang.PM;l=12==n?u?12:0:n+(u?12:0)}else if(3600*n+60*s+a>=o+(this.settings.show2400?1:0)){if(!1===this.settings.wrapHours)return null;l=n%24}var c=3600*l+60*s+a;if(n<12&&!r&&this.settings._twelveHourTime&&this.settings.scrollDefault()){var m=c-this.settings.scrollDefault();m<0&&m>=-43200&&(c=(c+43200)%o)}return c}},{key:"parseMinuteString",value:function(e){e||(e=0);var t=1;return 1==e.length&&(t=10),parseInt(e)*t||0}},{key:"intStringDateOrFunc2func",value:function(e){var t=this;return null==e?function(){return null}:"function"==typeof e?function(){return t.anytime2int(e())}:function(){return t.anytime2int(e)}}},{key:"parseSettings",value:function(e){if(e.lang=s(s({},d),e.lang),this.settings=e,e.listWidth&&(e.listWidth=this.anytime2int(e.listWidth)),e.minTime=this.intStringDateOrFunc2func(e.minTime),e.maxTime=this.intStringDateOrFunc2func(e.maxTime),e.durationTime=this.intStringDateOrFunc2func(e.durationTime),e.scrollDefault?e.scrollDefault=this.intStringDateOrFunc2func(e.scrollDefault):e.scrollDefault=e.minTime,"string"==typeof e.timeFormat&&e.timeFormat.match(/[gh]/)&&(e._twelveHourTime=!0),"function"!=typeof e.step){var t=e.step;e.step=function(){return t}}return e.disableTimeRanges=this._parseDisableTimeRanges(e.disableTimeRanges),e.closeOnWindowScroll&&!e.closeOnScroll&&(e.closeOnScroll=e.closeOnWindowScroll),!0===e.closeOnScroll&&(e.closeOnScroll=window.document),e}},{key:"_parseDisableTimeRanges",value:function(e){if(!e||0==e.length)return[];for(var t in e)e[t]=[this.anytime2int(e[t][0]),this.anytime2int(e[t][1])];for(t=(e=e.sort((function(e,t){return e[0]-t[0]}))).length-1;t>0;t--)e[t][0]<=e[t-1][1]&&(e[t-1]=[Math.min(e[t][0],e[t-1][0]),Math.max(e[t][1],e[t-1][1])],e.splice(t,1));return e}},{key:"_disableTextInputHandler",value:function(e){switch(e.keyCode){case 13:case 9:return;default:e.preventDefault()}}},{key:"_int2duration",value:function(e,t){e=Math.abs(e);var i,n,r=Math.round(e/60),s=[];return r<60?s=[r,this.settings.lang.mins]:(i=Math.floor(r/60),n=r%60,30==t&&30==n&&(i+=this.settings.lang.decimal+5),s.push(i),s.push(1==i?this.settings.lang.hr:this.settings.lang.hrs),30!=t&&n&&(s.push(n),s.push(this.settings.lang.mins))),s.join(" ")}},{key:"_roundAndFormatTime",value:function(e){if(null!==(e=this.settings.roundingFunction(e,this.settings)))return this._int2time(e)}},{key:"_int2time",value:function(e){if("number"!=typeof e)return null;var t=parseInt(e%60),i=parseInt(e/60%60),n=parseInt(e/3600%24),r=new Date(1970,0,2,n,i,t,0);if(isNaN(r.getTime()))return null;if("function"==typeof this.settings.timeFormat)return this.settings.timeFormat(r);for(var s,a,l="",u=0;u<this.settings.timeFormat.length;u++)switch(a=this.settings.timeFormat.charAt(u)){case"a":l+=r.getHours()>11?this.settings.lang.pm:this.settings.lang.am;break;case"A":l+=r.getHours()>11?this.settings.lang.PM:this.settings.lang.AM;break;case"g":l+=0==(s=r.getHours()%12)?"12":s;break;case"G":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s;break;case"h":0!=(s=r.getHours()%12)&&s<10&&(s="0"+s),l+=0===s?"12":s;break;case"H":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s>9?s:"0"+s;break;case"i":l+=(i=r.getMinutes())>9?i:"0"+i;break;case"s":l+=(t=r.getSeconds())>9?t:"0"+t;break;case"\\":u++,l+=this.settings.timeFormat.charAt(u);break;default:l+=a}return l}},{key:"_setSelected",value:function(){var e=this.list;e.find("li").removeClass("ui-timepicker-selected");var t=this.anytime2int(this._getTimeValue());if(null!==t){var i=this._findRow(t);if(i){var n=i.getBoundingClientRect(),r=e.get(0).getBoundingClientRect(),s=n.top-r.top;if(s+n.height>r.height||s<0){var a=e.scrollTop()+(n.top-r.top)-n.height;e.scrollTop(a)}var l=parseInt(i.dataset.time);(this.settings.forceRoundTime||l===t)&&i.classList.add("ui-timepicker-selected")}}}},{key:"_isFocused",value:function(e){return e===document.activeElement}},{key:"_handleFormatValue",value:function(e){e&&"timepicker"==e.detail||this._formatValue(e)}},{key:"_formatValue",value:function(e,t){if(""!==this.targetEl.value){if(!this._isFocused(this.targetEl)||e&&"change"==e.type){var i=this.settings,n=this.anytime2int(this.targetEl.value);if(null!==n){var r=!1;null!==i.minTime&&null!==i.maxTime&&(n<i.minTime()||n>i.maxTime())&&(r=!0);var s,a=l(i.disableTimeRanges);try{for(a.s();!(s=a.n()).done;){var o=s.value;if(n>=o[0]&&n<o[1]){r=!0;break}}}catch(e){a.e(e)}finally{a.f()}if(i.forceRoundTime){var u=i.roundingFunction(n,i);u!=n&&(n=u,t=null)}var c=this._int2time(n);if(r){this._setTimeValue(c);var m=new CustomEvent("timeRangeError",f);this.targetEl.dispatchEvent(m)}else this._setTimeValue(c,t)}else{var d=new CustomEvent("timeFormatError",f);this.targetEl.dispatchEvent(d)}}}else this._setTimeValue(null,t)}},{key:"_generateNoneElement",value:function(t,i){var n,r,s,a;return"object"==e(t)?(n=t.label,r=t.className,s=t.value):"string"==typeof t?(n=t,s=""):$.error("Invalid noneOption value"),i?(a=document.createElement("option")).value=s:(a=document.createElement("li")).dataset.time=String(s),a.innerText=n,a.classList.add(r),a}},{key:"_handleKeyUp",value:function(e){var t=this;if(!this.list||!n.isVisible(this.list)||this.settings.disableTextInput)return!0;if("paste"!==e.type&&"cut"!==e.type)switch(e.keyCode){case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 65:case 77:case 80:case 186:case 8:case 46:this.settings.typeaheadHighlight?this._setSelected():this.list.hide()}else setTimeout((function(){t.settings.typeaheadHighlight?t._setSelected():t.list.hide()}),0)}}])&&i(r.prototype,a),u&&i(r,u),n}();function h(t){return Array.isArray(t)?t.map(h):!0===t?{label:"None",value:""}:"object"===e(t)?t:{label:t,value:""}}function g(e){var t=document.createElement("option");return t.value=e.label,e.duration?t.appendChild(document.createTextNode(e.label+" ("+e.duration+")")):t.appendChild(document.createTextNode(e.label)),e.disabled&&(t.disabled=!0),t}function v(e){var t=document.createElement("li");if(t.dataset.time=e.value,e.className&&t.classList.add(e.className),t.className=e.className,t.appendChild(document.createTextNode(e.label)),e.duration){var i=document.createElement("span");i.appendChild(document.createTextNode("("+e.duration+")")),i.classList.add("ui-timepicker-duration"),t.appendChild(i)}return e.disabled&&t.classList.add("ui-timepicker-disabled"),t}function y(e){var t,i=[].concat(function(e){if(!e.noneOption)return[];var t=h(e.noneOption);return Array.isArray(e.noneOption)?t:[t]}(e.settings),function(e){var t,i,n=e.settings,r=null!==(t=n.minTime())&&void 0!==t?t:0,s=null!==(i=n.maxTime())&&void 0!==i?i:r+o-1;s<r&&(s+=o),86399===s&&"string"==typeof n.timeFormat&&n.show2400&&(s=o);for(var a=[],c=r,m=0;c<=s;m++,c+=60*n.step(m)){var d=c,f=e._int2time(d),p=d%o<43200?"ui-timepicker-am":"ui-timepicker-pm",h={label:f,value:u(d,n),className:p};if((null!==n.minTime()||null!==n.durationTime())&&n.showDuration){var g,v=null!==(g=n.durationTime())&&void 0!==g?g:n.minTime();v>c&&(v-=o);var y=e._int2duration(c-v,n.step());h.duration=y}var b,k=l(n.disableTimeRanges);try{for(k.s();!(b=k.n()).done;){var T=b.value;if(d%o>=T[0]&&d%o<T[1]){h.disabled=!0;break}}}catch(e){k.e(e)}finally{k.f()}a.push(h)}return a}(e));if(t=e.settings.useSelect?function(e,t){var i=document.createElement("select");i.classList.add("ui-timepicker-select"),t&&(i.name="ui-timepicker-"+t);var n,r=l(e);try{for(r.s();!(n=r.n()).done;){var s=g(n.value);i.appendChild(s)}}catch(e){r.e(e)}finally{r.f()}return i}(i,e.targetEl.name):function(e){var t=document.createElement("ul");t.classList.add("ui-timepicker-list");var i,n=l(e);try{for(n.s();!(i=n.n()).done;){var r=v(i.value);t.appendChild(r)}}catch(e){n.e(e)}finally{n.f()}var s=document.createElement("div");return s.classList.add("ui-timepicker-wrapper"),s.tabIndex=-1,s.style.display="none",s.style.position="absolute",s.appendChild(t),s}(i),e.settings.className){var n,r=l(e.settings.className.split(" "));try{for(r.s();!(n=r.n()).done;){var s=n.value;t.classList.add(s)}}catch(e){r.e(e)}finally{r.f()}}return!e.settings.showDuration||null===e.settings.minTime&&null===e.settings.durationTime||(t.classList.add("ui-timepicker-with-duration"),t.classList.add("ui-timepicker-step-"+e.settings.step())),t}!function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(e,t){t||(t={}),t=Object.assign(f,t);var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}}(),c=function(t){var i={init:function(e){return this.each((function(){var r=t(this),a=new p(this,e),l=a.settings;if(l.lang,this.timepickerObj=a,r.addClass("ui-timepicker-input"),l.useSelect)n(r);else{if(r.prop("autocomplete","off"),l.showOn)for(var o in l.showOn)r.on(l.showOn[o]+".timepicker",i.show);r.on("change.timepicker",a._handleFormatValue),r.on("keydown.timepicker",s),r.on("keyup.timepicker",a._handleKeyUp),l.disableTextInput&&r.on("keydown.timepicker",a._disableTextInputHandler),r.on("cut.timepicker",a._handleKeyUp),r.on("paste.timepicker",a._handleKeyUp),a._formatValue(null,"initial")}}))},show:function(e){var i=t(this),s=i[0].timepickerObj,a=s.settings;if(e&&e.preventDefault(),a.useSelect)s.list.trigger("focus");else{s._hideKeyboard()&&i.trigger("blur");var l=s.list;if(!i.prop("readonly")&&(n(i),l=s.list,!p.isVisible(l))){i.is("input")&&(s.selectedValue=i.val()),s._setSelected(),p.hideAll(),"number"==typeof a.listWidth&&l.width(i.outerWidth()*a.listWidth),l.show();var o={};a.orientation.match(/r/)?o.left=i.offset().left+i.outerWidth()-l.outerWidth()+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/l/)?o.left=i.offset().left+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/c/)&&(o.left=i.offset().left+(i.outerWidth()-l.outerWidth())/2+parseInt(l.css("marginLeft").replace("px",""),10)),"t"==(a.orientation.match(/t/)?"t":a.orientation.match(/b/)?"b":i.offset().top+i.outerHeight(!0)+l.outerHeight()>t(window).height()+t(window).scrollTop()?"t":"b")?(l.addClass("ui-timepicker-positioned-top"),o.top=i.offset().top-l.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)):(l.removeClass("ui-timepicker-positioned-top"),o.top=i.offset().top+i.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)),l.offset(o);var u=l.find(".ui-timepicker-selected");if(!u.length){var c=s.anytime2int(s._getTimeValue());null!==c?u=t(s._findRow(c)):a.scrollDefault()&&(u=t(s._findRow(a.scrollDefault())))}if(u.length&&!u.hasClass("ui-timepicker-disabled")||(u=l.find("li:not(.ui-timepicker-disabled):first")),u&&u.length){var m=l.scrollTop()+u.position().top-u.outerHeight();l.scrollTop(m)}else l.scrollTop(0);return a.stopScrollPropagation&&t(document).on("wheel.ui-timepicker",".ui-timepicker-wrapper",(function(e){e.preventDefault();var i=t(this).scrollTop();t(this).scrollTop(i+e.originalEvent.deltaY)})),t(document).on("mousedown.ui-timepicker",r),window.addEventListener("resize",r),a.closeOnScroll&&t(a.closeOnScroll).on("scroll.ui-timepicker",r),i.trigger("showTimepicker"),this}}},hide:function(e){var t=this[0].timepickerObj;return t&&t.hideMe(),p.hideAll(),this},option:function(i,r){return"string"==typeof i&&void 0===r?this[0].timepickerObj.settings[i]:this.each((function(){var s=t(this),a=s[0].timepickerObj,l=a.settings,o=a.list;"object"==e(i)?l=t.extend(l,i):"string"==typeof i&&(l[i]=r),l=a.parseSettings(l),a.settings=l,a._formatValue({type:"change"},"initial"),o&&(o.remove(),a.list=null),l.useSelect&&n(s)}))},getSecondsFromMidnight:function(){var e=this[0].timepickerObj;return e.anytime2int(e._getTimeValue())},getTime:function(e){var t=this[0].timepickerObj,i=t._getTimeValue();if(!i)return null;var n=t.anytime2int(i);if(null===n)return null;e||(e=new Date);var r=new Date(e);return r.setHours(n/3600),r.setMinutes(n%3600/60),r.setSeconds(n%60),r.setMilliseconds(0),r},isVisible:function(){var e=this[0].timepickerObj;return!!(e&&e.list&&p.isVisible(e.list))},setTime:function(e){var t=this[0].timepickerObj,i=t.settings;if(i.forceRoundTime)var n=t._roundAndFormatTime(t.anytime2int(e));else n=t._int2time(t.anytime2int(e));return e&&null===n&&i.noneOption&&(n=e),t._setTimeValue(n,"initial"),t._formatValue({type:"change"},"initial"),t&&t.list&&t._setSelected(),this},remove:function(){var e=this;if(e.hasClass("ui-timepicker-input")){var t=e[0].timepickerObj,i=t.settings;return e.removeAttr("autocomplete","off"),e.removeClass("ui-timepicker-input"),e.removeData("timepicker-obj"),e.off(".timepicker"),t.list&&t.list.remove(),i.useSelect&&e.show(),t.list=null,this}}};function n(e){var n=e[0].timepickerObj,r=n.list,s=n.settings;r&&r.length&&(r.remove(),n.list=null);var a=t(y(n));if(r=s.useSelect?a:a.children("ul"),a.data("timepicker-input",e),n.list=a,s.useSelect)e.val()&&r.val(n._roundAndFormatTime(n.anytime2int(e.val()))),r.on("focus",(function(){t(this).data("timepicker-input").trigger("showTimepicker")})),r.on("blur",(function(){t(this).data("timepicker-input").trigger("hideTimepicker")})),r.on("change",(function(){n._setTimeValue(t(this).val(),"select")})),n._setTimeValue(r.val(),"initial"),e.hide().after(r);else{var l=s.appendTo;"string"==typeof l?l=t(l):"function"==typeof l&&(l=l(e)),l.append(a),n._setSelected(),r.on("mousedown click","li",(function(s){e.off("focus.timepicker"),e.on("focus.timepicker-ie-hack",(function(){e.off("focus.timepicker-ie-hack"),e.on("focus.timepicker",i.show)})),n._hideKeyboard()||e[0].focus(),r.find("li").removeClass("ui-timepicker-selected"),t(this).addClass("ui-timepicker-selected"),n._selectValue()&&(e.trigger("hideTimepicker"),r.on("mouseup.timepicker click.timepicker","li",(function(e){r.off("mouseup.timepicker click.timepicker"),a.hide()})))}))}}function r(e){if("focus"!=e.type||e.target!=window){var i=t(e.target);i.closest(".ui-timepicker-input").length||i.closest(".ui-timepicker-wrapper").length||(p.hideAll(),t(document).off(".ui-timepicker"),t(window).off(".ui-timepicker"))}}function s(e){var n=t(this),r=n[0].timepickerObj,s=r.list;if(!s||!p.isVisible(s)){if(40!=e.keyCode)return!0;i.show.call(n.get(0)),s=r.list,r._hideKeyboard()||n.trigger("focus")}switch(e.keyCode){case 13:return r._selectValue()&&(r._formatValue({type:"change"}),r.hideMe()),e.preventDefault(),!1;case 38:var a=s.find(".ui-timepicker-selected");return a.length?a.is(":first-child")||(a.removeClass("ui-timepicker-selected"),a.prev().addClass("ui-timepicker-selected"),a.prev().position().top<a.outerHeight()&&s.scrollTop(s.scrollTop()-a.outerHeight())):(s.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")),!1;case 40:return 0===(a=s.find(".ui-timepicker-selected")).length?(s.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")):a.is(":last-child")||(a.removeClass("ui-timepicker-selected"),a.next().addClass("ui-timepicker-selected"),a.next().position().top+2*a.outerHeight()>s.outerHeight()&&s.scrollTop(s.scrollTop()+a.outerHeight())),!1;case 27:s.find("li").removeClass("ui-timepicker-selected"),r.hideMe();break;case 9:r.hideMe();break;default:return!0}}t.fn.timepicker=function(n){return this.length?i[n]?this.hasClass("ui-timepicker-input")?i[n].apply(this,Array.prototype.slice.call(arguments,1)):this:"object"!==e(n)&&n?void t.error("Method "+n+" does not exist on jQuery.timepicker"):i.init.apply(this,arguments):this},t.fn.timepicker.defaults=m},"object"===("undefined"==typeof exports?"undefined":e(exports))&&exports&&"object"===("undefined"==typeof module?"undefined":e(module))&&module&&module.exports===exports?c(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],c):c(jQuery)}();
1
+ !function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function t(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function i(t,i){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,i){if(t){if("string"==typeof t)return e(t,i);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,i):void 0}}(t))||i){n&&(t=n);var r=0,s=function(){};return{s:s,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var e=n.next();return l=e.done,e},e:function(e){o=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw a}}}}function n(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach(function(t){n(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function a(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i;if("undefined"!=typeof Symbol&&void 0!==(i=e[Symbol.toPrimitive])){var n=i.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}var o=86400,u={bubbles:!0,cancelable:!1,detail:null};function c(e,t){return e==o&&t.show2400?e:e%o}function d(e){var t,i,n=null!==(t=e.minTime())&&void 0!==t?t:0,r=null!==(i=e.maxTime())&&void 0!==i?i:n+o-1;return r<n&&(r+=o),86399===r&&"string"==typeof e.timeFormat&&e.show2400&&(r=o),{start:n,end:r}}var f,m={appendTo:"body",className:null,closeOnWindow:!1,closeOnScroll:!1,disableTextInput:!1,disableTimeRanges:[],disableTouchKeyboard:!1,durationTime:null,forceRoundTime:!1,lang:{},listWidth:null,maxTime:null,minTime:null,noneOption:!1,orientation:"l",roundingFunction:function(e,t){var i;if(null===e)return null;var n=null!==(i=t.minTime())&&void 0!==i?i:0;e<n&&(e+=o);for(var r=0,s=n;s<e;)r++,s+=60*t.step(r);var a=s-60*t.step(r-1);return c(e-a<s-e?a:s,t)},scrollDefault:null,selectOnBlur:!1,show2400:!1,showDuration:!1,showOn:["click","focus"],step:30,stopScrollPropagation:!1,timeFormat:"g:ia",typeaheadHighlight:!0,useSelect:!1,wrapHours:!0},p={am:"am",pm:"pm",AM:"AM",PM:"PM",decimal:".",mins:"mins",hr:"hr",hrs:"hrs"},h=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._handleFormatValue=this._handleFormatValue.bind(this),this._handleKeyUp=this._handleKeyUp.bind(this),this.targetEl=t;var n=e.extractAttrOptions(t,Object.keys(m));this.settings=this.parseSettings(s(s(s({},m),i),n))}return n=e,r=[{key:"hideMe",value:function(){if(this.settings.useSelect)this.targetEl.blur();else if(this.list&&e.isVisible(this.list)){this.settings.selectOnBlur&&this._selectValue(),this.list.hide();var t=new CustomEvent("hideTimepicker",u);this.targetEl.dispatchEvent(t)}}},{key:"_findRow",value:function(e){if(!e&&0!==e)return!1;var t=!1;return e=this.settings.roundingFunction(e,this.settings),!!this.list&&(this.list.find("li").each(function(i,n){var r=parseInt(n.dataset.time);if(!isNaN(r))return r==e?(t=n,!1):void 0}),t)}},{key:"_hideKeyboard",value:function(){return(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.settings.disableTouchKeyboard}},{key:"_setTimeValue",value:function(e,t){if("INPUT"===this.targetEl.nodeName){null===e&&""==this.targetEl.value||(this.targetEl.value=e);var i=this,n=i.settings;n.useSelect&&"select"!=t&&i.list&&i.list.val(n.roundingFunction(i.anytime2int(e),n))}var r=new CustomEvent("selectTime",u);if(this.selectedValue!=e){this.selectedValue=e;var s=new CustomEvent("changeTime",u),a=new CustomEvent("change",Object.assign(u,{detail:"timepicker"}));return"select"==t?(this.targetEl.dispatchEvent(r),this.targetEl.dispatchEvent(s),this.targetEl.dispatchEvent(a)):-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(s),!0}return-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(r),!1}},{key:"_getTimeValue",value:function(){return"INPUT"===this.targetEl.nodeName?this.targetEl.value:this.selectedValue}},{key:"_selectValue",value:function(){var e=this;e.settings;var t=e.list.find(".ui-timepicker-selected");if(t.hasClass("ui-timepicker-disabled"))return!1;if(!t.length)return!0;var i=t.get(0).dataset.time;if(i){var n=parseInt(i);isNaN(n)||(i=n)}return null!==i&&("string"!=typeof i&&(i=e._int2time(i)),e._setTimeValue(i,"select")),!0}},{key:"anytime2int",value:function(e){return"number"==typeof e?e:"string"==typeof e?this.time2int(e):"object"===l(e)&&e instanceof Date?3600*e.getHours()+60*e.getMinutes()+e.getSeconds():"function"==typeof e?e():null}},{key:"time2int",value:function(e){if(""===e||null==e)return null;if("now"===e)return this.anytime2int(new Date);if("string"!=typeof e)return e;e=e.toLowerCase().replace(/[\s\.]/g,""),"am"!==this.settings.lang.am||"a"!=e.slice(-1)&&"p"!=e.slice(-1)||(e+="m");var t=/^(([^0-9]*))?([0-9]?[0-9])(([0-5][0-9]))?(([0-5][0-9]))?(([^0-9]*))$/;e.match(/\W/)&&(t=/^(([^0-9]*))?([0-9]?[0-9])(\W+([0-5][0-9]?))?(\W+([0-5][0-9]))?(([^0-9]*))$/);var i=e.match(t);if(!i)return null;var n=parseInt(1*i[3],10),r=i[2]||i[9],s=this.parseMinuteString(i[5]),a=1*i[7]||0;r||2!=i[3].length||"0"!=i[3][0]||(r="am"),n>24&&!s&&(n=1*i[3][0],s=this.parseMinuteString(i[3][1]));var l=n;if(n<=12&&r){var u=(r=r.trim())==this.settings.lang.pm||r==this.settings.lang.PM;l=12==n?u?12:0:n+(u?12:0)}else if(3600*n+60*s+a>=o+(this.settings.show2400?1:0)){if(!1===this.settings.wrapHours)return null;l=n%24}var c=3600*l+60*s+a;if(n<12&&!r&&this.settings._twelveHourTime&&!this._resolvingScrollDefault){var d;this._resolvingScrollDefault=!0;try{d=this.settings.scrollDefault()}finally{this._resolvingScrollDefault=!1}if(d){var f=c-d;f<0&&f>=-43200&&(c=(c+43200)%o)}}return c}},{key:"parseMinuteString",value:function(e){e||(e=0);var t=1;return 1==e.length&&(t=10),parseInt(e)*t||0}},{key:"intStringDateOrFunc2func",value:function(e){var t=this;return null==e?function(){return null}:"function"==typeof e?function(){return t.anytime2int(e())}:function(){return t.anytime2int(e)}}},{key:"parseSettings",value:function(e){if(e.lang=s(s({},p),e.lang),this.settings=e,e.listWidth&&(e.listWidth=this.anytime2int(e.listWidth)),e.minTime=this.intStringDateOrFunc2func(e.minTime),e.maxTime=this.intStringDateOrFunc2func(e.maxTime),e.durationTime=this.intStringDateOrFunc2func(e.durationTime),e.scrollDefault?e.scrollDefault=this.intStringDateOrFunc2func(e.scrollDefault):e.scrollDefault=e.minTime,"string"==typeof e.timeFormat&&e.timeFormat.match(/[gh]/)&&(e._twelveHourTime=!0),"function"!=typeof e.step){var t=e.step;e.step=function(){return t}}return e.disableTimeRanges=this._parseDisableTimeRanges(e.disableTimeRanges),e.closeOnWindowScroll&&!e.closeOnScroll&&(e.closeOnScroll=e.closeOnWindowScroll),!0===e.closeOnScroll&&(e.closeOnScroll=window.document),e}},{key:"_parseDisableTimeRanges",value:function(e){if(!e||0==e.length)return[];for(var t in e)e[t]=[this.anytime2int(e[t][0]),this.anytime2int(e[t][1])];for(t=(e=e.sort(function(e,t){return e[0]-t[0]})).length-1;t>0;t--)e[t][0]<=e[t-1][1]&&(e[t-1]=[Math.min(e[t][0],e[t-1][0]),Math.max(e[t][1],e[t-1][1])],e.splice(t,1));return e}},{key:"_disableTextInputHandler",value:function(e){switch(e.keyCode){case 13:case 9:return;default:e.preventDefault()}}},{key:"_int2duration",value:function(e,t){e=Math.abs(e);var i,n,r=Math.round(e/60),s=[];return r<60?s=[r,this.settings.lang.mins]:(i=Math.floor(r/60),n=r%60,30==t&&30==n&&(i+=this.settings.lang.decimal+5),s.push(i),s.push(1==i?this.settings.lang.hr:this.settings.lang.hrs),30!=t&&n&&(s.push(n),s.push(this.settings.lang.mins))),s.join(" ")}},{key:"_roundAndFormatTime",value:function(e){if(null!==(e=this.settings.roundingFunction(e,this.settings)))return this._int2time(e)}},{key:"_int2time",value:function(e){if("number"!=typeof e)return null;var t=parseInt(e%60),i=parseInt(e/60%60),n=parseInt(e/3600%24),r=new Date(1970,0,2,n,i,t,0);if(isNaN(r.getTime()))return null;if("function"==typeof this.settings.timeFormat)return this.settings.timeFormat(r);for(var s,a,l="",u=0;u<this.settings.timeFormat.length;u++)switch(a=this.settings.timeFormat.charAt(u)){case"a":l+=r.getHours()>11?this.settings.lang.pm:this.settings.lang.am;break;case"A":l+=r.getHours()>11?this.settings.lang.PM:this.settings.lang.AM;break;case"g":l+=0==(s=r.getHours()%12)?"12":s;break;case"G":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s;break;case"h":0!=(s=r.getHours()%12)&&s<10&&(s="0"+s),l+=0===s?"12":s;break;case"H":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s>9?s:"0"+s;break;case"i":l+=(i=r.getMinutes())>9?i:"0"+i;break;case"s":l+=(t=r.getSeconds())>9?t:"0"+t;break;case"\\":u++,l+=this.settings.timeFormat.charAt(u);break;default:l+=a}return l}},{key:"_setSelected",value:function(){var e=this.list;e.find("li").removeClass("ui-timepicker-selected");var t=this.anytime2int(this._getTimeValue());if(null!==t){var i=this._findRow(t);if(i){var n=i.getBoundingClientRect(),r=e.get(0).getBoundingClientRect(),s=n.top-r.top;if(s+n.height>r.height||s<0){var a=e.scrollTop()+(n.top-r.top)-n.height;e.scrollTop(a)}var l=parseInt(i.dataset.time);(this.settings.forceRoundTime||l===t)&&i.classList.add("ui-timepicker-selected")}}}},{key:"_isFocused",value:function(e){return e===document.activeElement}},{key:"_handleFormatValue",value:function(e){e&&"timepicker"==e.detail||this._formatValue(e)}},{key:"_formatValue",value:function(e,t){if(""!==this.targetEl.value){if(!this._isFocused(this.targetEl)||e&&"change"==e.type){var i=this.settings,n=this.anytime2int(this.targetEl.value);if(null!==n){var r=this._isTimeRangeError(n,i);if(i.forceRoundTime){var s=i.roundingFunction(n,i);s!=n&&(n=s,t=null)}var a=this._int2time(n);if(r){this._setTimeValue(a);var l=new CustomEvent("timeRangeError",u);this.targetEl.dispatchEvent(l)}else this._setTimeValue(a,t)}else{var o=new CustomEvent("timeFormatError",u);this.targetEl.dispatchEvent(o)}}}else this._setTimeValue(null,t)}},{key:"_isTimeRangeError",value:function(e,t){var n=d(t),r=n.start,s=n.end;if((e<r?e+o:e)>s)return!0;var a,l=i(t.disableTimeRanges);try{for(l.s();!(a=l.n()).done;){var u=a.value;if(e>=u[0]&&e<u[1])return!0}}catch(e){l.e(e)}finally{l.f()}return!1}},{key:"_generateNoneElement",value:function(e,t){var i,n,r,s;return"object"==l(e)?(i=e.label,n=e.className,r=e.value):"string"==typeof e?(i=e,r=""):$.error("Invalid noneOption value"),t?(s=document.createElement("option")).value=r:(s=document.createElement("li")).dataset.time=String(r),s.innerText=i,s.classList.add(n),s}},{key:"_handleKeyUp",value:function(t){var i=this;if(!this.list||!e.isVisible(this.list)||this.settings.disableTextInput)return!0;if("paste"!==t.type&&"cut"!==t.type)switch(t.keyCode){case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 65:case 77:case 80:case 186:case 8:case 46:this.settings.typeaheadHighlight?this._setSelected():this.list.hide()}else setTimeout(function(){i.settings.typeaheadHighlight?i._setSelected():i.list.hide()},0)}}],a=[{key:"extractAttrOptions",value:function(e,t){var n,r={},s=i(t);try{for(s.s();!(n=s.n()).done;){var a=n.value;a in e.dataset&&(r[a]=e.dataset[a])}}catch(e){s.e(e)}finally{s.f()}return r}},{key:"isVisible",value:function(e){var t=e[0];return t.offsetWidth>0&&t.offsetHeight>0}},{key:"hideAll",value:function(){var e,t=i(document.getElementsByClassName("ui-timepicker-input"));try{for(t.s();!(e=t.n()).done;){var n=e.value.timepickerObj;n&&n.hideMe()}}catch(e){t.e(e)}finally{t.f()}}}],r&&t(n.prototype,r),a&&t(n,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,a}();function g(e){return Array.isArray(e)?e.map(g):!0===e?{label:"None",value:""}:"object"===l(e)?e:{label:e,value:""}}function v(e){var t,i=document.createElement("option");return i.value=null!==(t=e.value)&&void 0!==t?t:e.label,e.duration?i.appendChild(document.createTextNode(e.label+" ("+e.duration+")")):i.appendChild(document.createTextNode(e.label)),e.disabled&&(i.disabled=!0),i}function y(e){var t=document.createElement("li");if(t.dataset.time=e.value,e.className&&t.classList.add(e.className),t.className=e.className,t.appendChild(document.createTextNode(e.label)),e.duration){var i=document.createElement("span");i.appendChild(document.createTextNode("("+e.duration+")")),i.classList.add("ui-timepicker-duration"),t.appendChild(i)}return e.disabled&&t.classList.add("ui-timepicker-disabled"),t}function b(e){var t,n=[].concat(function(e){if(!e.noneOption)return[];var t=g(e.noneOption);return Array.isArray(e.noneOption)?t:[t]}(e.settings),function(e){for(var t=e.settings,n=d(t),r=n.start,s=n.end,a=[],l=r,u=0;l<=s;u++,l+=60*t.step(u)){var f=l,m=e._int2time(f),p=f%o<43200?"ui-timepicker-am":"ui-timepicker-pm",h={label:m,value:c(f,t),className:p};if((null!==t.minTime()||null!==t.durationTime())&&t.showDuration){var g,v=null!==(g=t.durationTime())&&void 0!==g?g:t.minTime();v>l&&(v-=o);var y=e._int2duration(l-v,t.step());h.duration=y}var b,k=i(t.disableTimeRanges);try{for(k.s();!(b=k.n()).done;){var w=b.value;if(f%o>=w[0]&&f%o<w[1]){h.disabled=!0;break}}}catch(e){k.e(e)}finally{k.f()}a.push(h)}return a}(e));if(t=e.settings.useSelect?function(e,t){var n=document.createElement("select");n.classList.add("ui-timepicker-select"),t&&(n.name="ui-timepicker-"+t);var r,s=i(e);try{for(s.s();!(r=s.n()).done;){var a=v(r.value);n.appendChild(a)}}catch(e){s.e(e)}finally{s.f()}return n}(n,e.targetEl.name):function(e){var t=document.createElement("ul");t.classList.add("ui-timepicker-list");var n,r=i(e);try{for(r.s();!(n=r.n()).done;){var s=y(n.value);t.appendChild(s)}}catch(e){r.e(e)}finally{r.f()}var a=document.createElement("div");return a.classList.add("ui-timepicker-wrapper"),a.tabIndex=-1,a.style.display="none",a.style.position="absolute",a.appendChild(t),a}(n),e.settings.className){var r,s=i(e.settings.className.split(" "));try{for(s.s();!(r=s.n()).done;){var a=r.value;t.classList.add(a)}}catch(e){s.e(e)}finally{s.f()}}return!e.settings.showDuration||null===e.settings.minTime&&null===e.settings.durationTime||(t.classList.add("ui-timepicker-with-duration"),t.classList.add("ui-timepicker-step-"+e.settings.step())),t}!function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(e,t){t||(t={}),t=Object.assign(u,t);var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}}(),f=function(e){var t={init:function(n){return this.each(function(){var s=e(this),a=new h(this,n),l=a.settings;if(l.lang,this.timepickerObj=a,s.addClass("ui-timepicker-input"),l.useSelect)i(s);else{if(s.prop("autocomplete","off"),l.showOn)for(var o in l.showOn)s.on(l.showOn[o]+".timepicker",t.show);s.on("change.timepicker",a._handleFormatValue),s.on("keydown.timepicker",r),s.on("keyup.timepicker",a._handleKeyUp),l.disableTextInput&&s.on("keydown.timepicker",a._disableTextInputHandler),s.on("cut.timepicker",a._handleKeyUp),s.on("paste.timepicker",a._handleKeyUp),a._formatValue(null,"initial")}})},show:function(t){var r=e(this),s=r[0].timepickerObj,a=s.settings;if(t&&t.preventDefault(),a.useSelect)s.list.trigger("focus");else{s._hideKeyboard()&&r.trigger("blur");var l=s.list;if(!r.prop("readonly")&&(i(r),l=s.list,!h.isVisible(l))){r.is("input")&&(s.selectedValue=r.val()),s._setSelected(),h.hideAll(),"number"==typeof a.listWidth&&l.width(r.outerWidth()*a.listWidth),l.show();var o={};a.orientation.match(/r/)?o.left=r.offset().left+r.outerWidth()-l.outerWidth()+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/l/)?o.left=r.offset().left+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/c/)&&(o.left=r.offset().left+(r.outerWidth()-l.outerWidth())/2+parseInt(l.css("marginLeft").replace("px",""),10)),"t"==(a.orientation.match(/t/)?"t":a.orientation.match(/b/)?"b":r.offset().top+r.outerHeight(!0)+l.outerHeight()>e(window).height()+e(window).scrollTop()?"t":"b")?(l.addClass("ui-timepicker-positioned-top"),o.top=r.offset().top-l.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)):(l.removeClass("ui-timepicker-positioned-top"),o.top=r.offset().top+r.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)),l.offset(o);var u=l.find(".ui-timepicker-selected");if(!u.length){var c=s.anytime2int(s._getTimeValue());null!==c?u=e(s._findRow(c)):a.scrollDefault()&&(u=e(s._findRow(a.scrollDefault())))}if(u.length&&!u.hasClass("ui-timepicker-disabled")||(u=l.find("li:not(.ui-timepicker-disabled):first")),u&&u.length){var d=l.scrollTop()+u.position().top-u.outerHeight();l.scrollTop(d)}else l.scrollTop(0);return a.stopScrollPropagation&&e(document).on("wheel.ui-timepicker",".ui-timepicker-wrapper",function(t){t.preventDefault();var i=e(this).scrollTop();e(this).scrollTop(i+t.originalEvent.deltaY)}),e(document).on("mousedown.ui-timepicker",n),window.addEventListener("resize",n),a.closeOnScroll&&e(a.closeOnScroll).on("scroll.ui-timepicker",n),r.trigger("showTimepicker"),this}}},hide:function(e){var t=this[0].timepickerObj;return t&&t.hideMe(),h.hideAll(),this},option:function(t,n){return"string"==typeof t&&void 0===n?this[0].timepickerObj.settings[t]:this.each(function(){var r=e(this),s=r[0].timepickerObj,a=s.settings,o=s.list;"object"==l(t)?a=e.extend(a,t):"string"==typeof t&&(a[t]=n),a=s.parseSettings(a),s.settings=a,s._formatValue({type:"change"},"initial"),o&&(o.remove(),s.list=null),a.useSelect&&i(r)})},getSecondsFromMidnight:function(){var e=this[0].timepickerObj;return e.anytime2int(e._getTimeValue())},getTime:function(e){var t=this[0].timepickerObj,i=t._getTimeValue();if(!i)return null;var n=t.anytime2int(i);if(null===n)return null;e||(e=new Date);var r=new Date(e);return r.setHours(n/3600),r.setMinutes(n%3600/60),r.setSeconds(n%60),r.setMilliseconds(0),r},isVisible:function(){var e=this[0].timepickerObj;return!!(e&&e.list&&h.isVisible(e.list))},setTime:function(e){var t=this[0].timepickerObj,i=t.settings,n=t.anytime2int(e);if(t._isTimeRangeError(n,i)){var r=new CustomEvent("timeRangeError",u);t.targetEl.dispatchEvent(r)}if(i.forceRoundTime)var s=t._roundAndFormatTime(n);else s=t._int2time(n);return e&&null===s&&i.noneOption&&(s=e),t._setTimeValue(s,"initial"),t._formatValue({type:"change"},"initial"),t&&t.list&&t._setSelected(),this},remove:function(){var e=this;if(e.hasClass("ui-timepicker-input")){var t=e[0].timepickerObj,i=t.settings;return e.removeAttr("autocomplete","off"),e.removeClass("ui-timepicker-input"),e.removeData("timepicker-obj"),e.off(".timepicker"),t.list&&t.list.remove(),i.useSelect&&e.show(),t.requiredMoved&&e.prop("required",!0),t.list=null,this}}};function i(i){var n=i[0].timepickerObj,r=n.list,s=n.settings;r&&r.length&&(r.remove(),n.list=null);var a=e(b(n));if(r=s.useSelect?a:a.children("ul"),a.data("timepicker-input",i),n.list=a,s.useSelect){i.val()?r.val(s.roundingFunction(n.anytime2int(i.val()),s)):r.val(""),r.on("focus",function(){e(this).data("timepicker-input").trigger("showTimepicker")}),r.on("blur",function(){e(this).data("timepicker-input").trigger("hideTimepicker")});var l=function(){var e=r.val(),t=parseInt(e);return isNaN(t)?e:n._int2time(t)};r.on("change",function(){n._setTimeValue(l(),"select")}),i.prop("required")&&(n.requiredMoved=!0,i.prop("required",!1)),r.prop("required",!!n.requiredMoved);var o=null===r.val()?i.val():l();n._setTimeValue(o,"initial"),i.hide().after(r)}else{var u=s.appendTo;"string"==typeof u?u=e(u):"function"==typeof u&&(u=u(i)),u.append(a),n._setSelected(),r.on("mousedown click","li",function(s){i.off("focus.timepicker"),i.on("focus.timepicker-ie-hack",function(){i.off("focus.timepicker-ie-hack"),i.on("focus.timepicker",t.show)}),n._hideKeyboard()||i[0].focus(),r.find("li").removeClass("ui-timepicker-selected"),e(this).addClass("ui-timepicker-selected"),n._selectValue()&&(i.trigger("hideTimepicker"),r.on("mouseup.timepicker click.timepicker","li",function(e){r.off("mouseup.timepicker click.timepicker"),a.hide()}))})}}function n(t){if("focus"!=t.type||t.target!=window){var i=e(t.target);i.closest(".ui-timepicker-input").length||i.closest(".ui-timepicker-wrapper").length||(h.hideAll(),e(document).off(".ui-timepicker"),e(window).off(".ui-timepicker"))}}function r(i){var n=e(this),r=n[0].timepickerObj,s=r.list;if(!s||!h.isVisible(s)){if(40!=i.keyCode)return!0;t.show.call(n.get(0)),s=r.list,r._hideKeyboard()||n.trigger("focus")}switch(i.keyCode){case 13:return r._selectValue()&&(r._formatValue({type:"change"}),r.hideMe()),i.preventDefault(),!1;case 38:var a=s.find(".ui-timepicker-selected");return a.length?a.is(":first-child")||(a.removeClass("ui-timepicker-selected"),a.prev().addClass("ui-timepicker-selected"),a.prev().position().top<a.outerHeight()&&s.scrollTop(s.scrollTop()-a.outerHeight())):(s.find("li").each(function(t,i){if(e(i).position().top>0)return a=e(i),!1}),a.addClass("ui-timepicker-selected")),!1;case 40:return 0===(a=s.find(".ui-timepicker-selected")).length?(s.find("li").each(function(t,i){if(e(i).position().top>0)return a=e(i),!1}),a.addClass("ui-timepicker-selected")):a.is(":last-child")||(a.removeClass("ui-timepicker-selected"),a.next().addClass("ui-timepicker-selected"),a.next().position().top+2*a.outerHeight()>s.outerHeight()&&s.scrollTop(s.scrollTop()+a.outerHeight())),!1;case 27:s.find("li").removeClass("ui-timepicker-selected"),r.hideMe();break;case 9:r.hideMe();break;default:return!0}}e.fn.timepicker=function(i){return this.length?t[i]?this.hasClass("ui-timepicker-input")?t[i].apply(this,Array.prototype.slice.call(arguments,1)):this:"object"!==l(i)&&i?void e.error("Method "+i+" does not exist on jQuery.timepicker"):t.init.apply(this,arguments):this},e.fn.timepicker.defaults=m},"object"===("undefined"==typeof exports?"undefined":l(exports))&&exports&&"object"===("undefined"==typeof module?"undefined":l(module))&&module&&module.exports===exports?f(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],f):f(jQuery)}();
package/package.json CHANGED
@@ -1,39 +1,41 @@
1
1
  {
2
2
  "name": "timepicker",
3
- "version": "1.14.0",
3
+ "version": "1.15.0",
4
4
  "title": "jquery-timepicker",
5
5
  "author": {
6
6
  "name": "Jon Thornton",
7
7
  "url": "https://github.com/jonthornton"
8
8
  },
9
9
  "scripts": {
10
- "build": "rollup --config rollup.config.js",
11
- "watch": "rollup -w --config rollup.config.js",
12
- "format": "prettier-eslint --write \"src/**/*.js\"",
10
+ "build": "rollup --config rollup.config.mjs",
11
+ "watch": "rollup -w --config rollup.config.mjs",
12
+ "format": "prettier --write \"src/**/*.js\"",
13
13
  "test": "jest"
14
14
  },
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "jquery": "^3.5.1"
17
+ "jquery": ">=3.5.1 <5"
18
18
  },
19
19
  "devDependencies": {
20
- "@babel/core": "^7.12.13",
21
- "@babel/preset-env": "^7.12.13",
22
- "@rollup/plugin-babel": "^5.2.3",
23
- "babel-jest": "^25.5.1",
24
- "jest": "^26.6.3",
25
- "prettier-eslint": "^9.0.2",
26
- "prettier-eslint-cli": "^5.0.0",
27
- "rollup": "^2.38.5",
28
- "rollup-plugin-copy": "^3.3.0",
29
- "rollup-plugin-terser": "^7.0.2"
20
+ "@babel/core": "^7.29.13",
21
+ "@babel/preset-env": "^7.29.7",
22
+ "@rollup/plugin-babel": "^7.1.0",
23
+ "@rollup/plugin-terser": "^1.0.2",
24
+ "babel-jest": "^30.5.2",
25
+ "jest": "^30.5.2",
26
+ "jest-environment-jsdom": "^30.5.2",
27
+ "prettier": "^3.9.10",
28
+ "rollup": "^4.68.0",
29
+ "rollup-plugin-copy": "^3.5.0"
30
30
  },
31
31
  "main": "jquery.timepicker.min.js",
32
+ "types": "src/jquery.timepicker.d.ts",
32
33
  "files": [
33
34
  "jquery.timepicker.min.js",
34
35
  "jquery.timepicker.js",
35
36
  "jquery.timepicker.css",
36
- "jquery.timepicker.min.css"
37
+ "jquery.timepicker.min.css",
38
+ "src/jquery.timepicker.d.ts"
37
39
  ],
38
40
  "description": "A jQuery timepicker plugin inspired by Google Calendar. It supports both mouse and keyboard navigation.",
39
41
  "keywords": [
@@ -0,0 +1,202 @@
1
+ // Type definitions for jQuery.timepicker
2
+ // https://github.com/jonthornton/jquery-timepicker
3
+
4
+ /**
5
+ * Declaring a namespace because there are several jquery timepickers already out there on DefinitelyTyped. Jt stands for Jon Thornton
6
+ */
7
+ declare namespace Jt.Timepicker {
8
+
9
+ /**
10
+ * Options object for the jquery.timepicker
11
+ */
12
+ export interface Options {
13
+ /**
14
+ * Default: 'body'
15
+ * Override where the dropdown is appended.
16
+ * Takes either a string to use as a selector, a function that gets passed the clicked input element as argument or a jquery object to use directly.
17
+ */
18
+ appendTo?: string | JQuery | ((clickedElement: JQuery) => JQuery);
19
+ /**
20
+ * Default: null
21
+ * A class name to apply to the HTML element that contains the timepicker dropdown.
22
+ */
23
+ className?: string;
24
+ /**
25
+ * Default: false
26
+ * Close the timepicker when the chosen element is scrolled. (Replicates <select> behavior.) Takes either a string to use as a selector, an HTMLElement, or a boolean (true binds to ```document``` scrolling).
27
+ */
28
+ closeOnScroll?: boolean | string | HTMLElement;
29
+ /**
30
+ * Default: false
31
+ * DEPRECATED.
32
+ * Close the timepicker when the window is scrolled. (Replicates <select> behavior.)
33
+ */
34
+ closeOnWindowScroll?: boolean;
35
+ /**
36
+ * Default: false
37
+ * Disable typing in the timepicker input box; force users to select from list.
38
+ * More information https://github.com/jonthornton/jquery-timepicker/issues/425#issuecomment-133262458
39
+ */
40
+ disableTextInput?: boolean;
41
+ /**
42
+ * Default: []
43
+ * Disable selection of certain time ranges. Input is an array of time pairs, like `[['3:00am', '4:30am'], ['5:00pm', '8:00pm']].
44
+ * The start of the interval will be disabled but the end won't.
45
+ */
46
+ disableTimeRanges?: Array<string[]>;
47
+ /**
48
+ * Default: false
49
+ * Disables the onscreen keyboard for touch devices. There can be instances where Firefox or Chrome have touch events enabled
50
+ * (such as on Surface tablets but not actually be a touch device. In this case disableTouchKeyboard will prevent the timepicker
51
+ * input field from being focused.
52
+ * More information: https://github.com/jonthornton/jquery-timepicker/issues/413
53
+ */
54
+ disableTouchKeyboard?: boolean;
55
+ /**
56
+ * Default: Same as the minTime
57
+ * The time against which showDuration will compute relative times. This should be given as a formatted date string.
58
+ */
59
+ durationTime?: string | Date | (() => string | Date);
60
+ /**
61
+ * Default: false
62
+ * Force update the time to step settings as soon as it loses focus`.
63
+ */
64
+ forceRoundTime?: boolean;
65
+ /**
66
+ * Default: 24 hours after minTime
67
+ * The time that should appear last in the dropdown list. Can be used to limit the range of time options.
68
+ */
69
+ listWidth?: number;
70
+ /**
71
+ * Default: null
72
+ * Set this to override CSS styling and set the list width to match the input element's width. Set to 1 to match input width, 2 to double input width, .5 to halve input width, etc. Set to `null` to let CSS determine the list width.
73
+ */
74
+ maxTime?: Date | string;
75
+ /**
76
+ * Default: 12:00 am
77
+ * The time that should appear first in the dropdown list.
78
+ */
79
+ minTime?: Date | string;
80
+ /**
81
+ * Default: false.
82
+ * Adds one or more custom options to the top of the dropdown. Can accept several different value types:
83
+ * Boolean (true): Adds a "None" option that results in an empty input value
84
+ * String: Adds an option with a custom label that results in an empty input value
85
+ * Object: Similar to string, but allows customizing the element's class name and the resulting input value. Can contain label, value, and className properties. The value property must be a string type.
86
+ * Array: An array of strings or objects to add multiple non-time options
87
+ */
88
+ noneOption?: boolean | string | string[] | NoneObject;
89
+ /**
90
+ * default: 'l'
91
+ * By default the timepicker dropdown will be aligned to the bottom right of the input element, or aligned to the top left if there isn't enough room below the input. Force alignment with l (left), r (right), t (top), and b (bottom). Examples: tl, rb.
92
+ */
93
+ orientation?: string;
94
+ /**
95
+ * Default: Rounds to the nearest step
96
+ * Function used to compute rounded times. The function will receive time in seconds and a settings object as arguments. The function should handle a null value for seconds
97
+ */
98
+ roundingFunction?: (seconds: number, settings: Options) => number;
99
+ /**
100
+ * Default: null
101
+ * If no time value is selected, set the dropdown scroll position to show the time provided, e.g. "09:00". A time string, Date object, or integer (seconds past midnight) is acceptible, as well as the string 'now'
102
+ */
103
+ scrollDefault?: string | Date | number | {};
104
+ /**
105
+ * Default: false
106
+ * Update the input with the currently highlighted time value when the timepicker loses focus.
107
+ */
108
+ selectOnBlur?: boolean;
109
+ /**
110
+ * Default: false
111
+ * Show "24:00" as an option when using 24-hour time format
112
+ */
113
+ show2400?: boolean;
114
+ /**
115
+ * Default: false
116
+ * Shows the relative time for each item in the dropdown. minTime or durationTime must be set.
117
+ */
118
+ showDuration?: boolean;
119
+ /**
120
+ * Default: ["click", "focus"]
121
+ * Display a timepicker dropdown when the input fires a particular event. Set to null or an empty array to disable automatic display. Setting should be an array of strings
122
+ */
123
+ showOn?: string[];
124
+ /**
125
+ * Default: 30
126
+ * The amount of time, in minutes, between each item in the dropdown. Alternately, you can specify a function to generate steps dynamically. The function will receive a count integer (0, 1, 2...) and is expected to return a step integer.
127
+ */
128
+ step?: number;
129
+ /**
130
+ * Default: false
131
+ * When scrolling on the edge of the picker, it prevent parent containers () to scroll
132
+ */
133
+ stopScrollPropagation?: boolean;
134
+ /**
135
+ * Default: 'g:ia'
136
+ * How times should be displayed in the list and input element. Uses PHP's date() formatting syntax. Characters can be escaped with a preceeding double slash (e.g. H\\hi). Alternatively, you can specify a function instead of a string, to use completely custom time formatting. In this case, * the format function receives a Date object and is expected to return a formatted time as a string
137
+ */
138
+ timeFormat?: string | ((givenDate: Date) => string);
139
+ /**
140
+ * Default: true
141
+ * Highlight the nearest corresponding time option as a value is typed into the form input.
142
+ */
143
+ typeaheadHighlight?: boolean;
144
+ /**
145
+ * Default: false
146
+ * Convert the input to an HTML <SELECT> control. This is ideal for small screen devices, or if you want to prevent the user from entering
147
+ * arbitrary values. This option is not compatible with the following options: appendTo, closeOnWindowScroll, disableTouchKeyboard,
148
+ * scrollDefault, selectOnBlur, typeAheadHighlight.
149
+ */
150
+ useSelect?: boolean;
151
+ }
152
+
153
+ /**
154
+ * Any value accepted as a time: a formatted string, seconds from midnight, or a Date.
155
+ */
156
+ export type TimeValue = string | number | Date;
157
+
158
+ /**
159
+ * The $.fn.timepicker method. Called with an options object (or nothing) to
160
+ * initialize; called with a method name to operate on an existing instance.
161
+ */
162
+ export interface TimepickerMethod {
163
+ (options?: Options): JQuery;
164
+
165
+ /** Display the dropdown. */
166
+ (method: "show"): JQuery;
167
+ /** Close the dropdown. */
168
+ (method: "hide"): JQuery;
169
+ /** Unbind the timepicker and restore the original input. */
170
+ (method: "remove"): JQuery;
171
+ /** Whether the dropdown is currently shown. */
172
+ (method: "isVisible"): boolean;
173
+ /** The selected time as seconds from midnight, or null if unset or unparseable. */
174
+ (method: "getSecondsFromMidnight"): number | null;
175
+ /** The selected time as a Date, or null if unset or unparseable. Defaults to today. */
176
+ (method: "getTime", relativeDate?: Date): Date | null;
177
+ /** Set the selected time. */
178
+ (method: "setTime", value: TimeValue): JQuery;
179
+ /** Read one setting off an existing instance. */
180
+ (method: "option", key: keyof Options): any;
181
+ /** Change one setting on an existing instance. */
182
+ (method: "option", key: keyof Options, value: any): JQuery;
183
+ /** Change several settings on an existing instance. */
184
+ (method: "option", options: Options): JQuery;
185
+
186
+ /**
187
+ * Defaults for every instance created after they are changed.
188
+ * Reachable as $.fn.timepicker.defaults.
189
+ */
190
+ defaults: Options;
191
+ }
192
+
193
+ export interface NoneObject {
194
+ label: string;
195
+ value: string;
196
+ className: string;
197
+ }
198
+ }
199
+
200
+ interface JQuery {
201
+ timepicker: Jt.Timepicker.TimepickerMethod;
202
+ }