Current state

This commit is contained in:
2026-02-07 08:23:18 +01:00
commit 0a4372c40d
22479 changed files with 1553543 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
/*!
* Legacy browser support
*/
[].map||(Array.prototype.map=function(a,b){for(var c=this,d=c.length,e=new Array(d),f=0;d>f;f++)f in c&&(e[f]=a.call(b,c[f],f,c));return e}),[].filter||(Array.prototype.filter=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;c>f;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),[].indexOf||(Array.prototype.indexOf=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!==d&&1/0!=d&&d!=-1/0&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);c>e;e++)if(e in b&&b[e]===a)return e;return-1});/*!
* Cross-Browser Split 1.1.1
* Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
* Available under the MIT License
* http://blog.stevenlevithan.com/archives/cross-browser-split
*/
var nativeSplit=String.prototype.split,compliantExecNpcg=void 0===/()??/.exec("")[1];String.prototype.split=function(a,b){var c=this;if("[object RegExp]"!==Object.prototype.toString.call(a))return nativeSplit.call(c,a,b);var d,e,f,g,h=[],i=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.extended?"x":"")+(a.sticky?"y":""),j=0;for(a=new RegExp(a.source,i+"g"),c+="",compliantExecNpcg||(d=new RegExp("^"+a.source+"$(?!\\s)",i)),b=void 0===b?-1>>>0:b>>>0;(e=a.exec(c))&&(f=e.index+e[0].length,!(f>j&&(h.push(c.slice(j,e.index)),!compliantExecNpcg&&e.length>1&&e[0].replace(d,function(){for(var a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(e[a]=void 0)}),e.length>1&&e.index<c.length&&Array.prototype.push.apply(h,e.slice(1)),g=e[0].length,j=f,h.length>=b)));)a.lastIndex===e.index&&a.lastIndex++;return j===c.length?(g||!a.test(""))&&h.push(""):h.push(c.slice(j)),h.length>b?h.slice(0,b):h};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*!
* Classic picker styling for pickadate.js
* Demo: http://amsul.github.io/pickadate.js
*/.picker{width:100%}.picker__holder{position:absolute;background:#fff;border:1px solid #aaa;border-top-width:0;border-bottom-width:0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;min-width:176px;max-width:466px;max-height:0;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transform:translateY(-1em) perspective(600px) rotateX(10deg);-moz-transform:translateY(-1em) perspective(600px) rotateX(10deg);transform:translateY(-1em) perspective(600px) rotateX(10deg);-webkit-transition:all .15s ease-out,max-height 0 .15s,border-width 0 .15s;-moz-transition:all .15s ease-out,max-height 0 .15s,border-width 0 .15s;transition:all .15s ease-out,max-height 0 .15s,border-width 0 .15s}.picker__frame{padding:1px}.picker__wrap{margin:-1px}.picker--opened .picker__holder{max-height:25em;-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1;border-top-width:1px;border-bottom-width:1px;-webkit-transform:translateY(0) perspective(600px) rotateX(0);-moz-transform:translateY(0) perspective(600px) rotateX(0);transform:translateY(0) perspective(600px) rotateX(0);-webkit-transition:all .15s ease-out,max-height 0,border-width 0;-moz-transition:all .15s ease-out,max-height 0,border-width 0;transition:all .15s ease-out,max-height 0,border-width 0;-webkit-box-shadow:0 6px 18px 1px rgba(0,0,0,.12);-moz-box-shadow:0 6px 18px 1px rgba(0,0,0,.12);box-shadow:0 6px 18px 1px rgba(0,0,0,.12)}

View File

@@ -0,0 +1 @@
.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2.5em;padding:.5em .25em;margin-left:.25em;margin-right:.25em;font-size:.6em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{font-size:.8em;margin-top:-.5em}}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;top:-.25em}@media (min-width:24.5em){.picker__nav--prev,.picker__nav--next{top:-.33em}}.picker__nav--prev{left:-1em;padding-right:1.25em}@media (min-width:24.5em){.picker__nav--prev{padding-right:1.5em}}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__nav--next{padding-left:1.5em}}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{color:#0089ec;position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--selected,.picker__day--selected:hover{border-color:#0089ec}.picker__day--highlighted{background:#b1dcfb}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{background:#0089ec;color:#fff}.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center}.picker__button--today,.picker__button--clear{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:50%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--today:before,.picker__button--clear:before{position:relative;display:inline-block;height:0}.picker__button--today:before{content:" ";margin-right:.45em;top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{content:"\D7";margin-right:.35em;top:-.1em;color:#e20;vertical-align:top;font-size:1.1em}

View File

@@ -0,0 +1 @@
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--selected,.picker__list-item--selected:hover{border-color:#0089ec;z-index:10}.picker__list-item--highlighted{background:#b1dcfb}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{background:#0089ec;color:#fff}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000;background:#b1dcfb;background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#fff}.picker--time{min-width:256px;max-width:320px}.picker--time .picker__holder{background:#f2f2f2}@media (min-height:40.125em){.picker--time .picker__holder{font-size:.875em}}.picker--time .picker__box{padding:0;position:relative}

View File

@@ -0,0 +1,4 @@
.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*!
* Default mobile-first, responsive styling for pickadate.js
* Demo: http://amsul.github.io/pickadate.js
*/.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background .15s ease-out,top 0s .15s;-moz-transition:background .15s ease-out,top 0s .15s;transition:background .15s ease-out,top 0s .15s}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:666px;width:100%;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}@media (min-height:33.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:33.875em){.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:26.5em){.picker__box{font-size:1.25em}}@media (min-height:33.875em){.picker__box{display:block;font-size:1.33em;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,.24);-moz-box-shadow:0 12px 36px 16px rgba(0,0,0,.24);box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}@media (min-height:40.125em){.picker__box{font-size:1.5em;border-bottom-width:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,.32);-webkit-transition:background .15s ease-out;-moz-transition:background .15s ease-out;transition:background .15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height:33.875em){.picker--opened .picker__frame{top:auto;bottom:0}}

View File

@@ -0,0 +1 @@
.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2.5em;padding:.5em .25em;margin-left:.25em;margin-right:.25em;font-size:.6em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{font-size:.8em;margin-top:-.5em}}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;top:-.25em}@media (min-width:24.5em){.picker__nav--prev,.picker__nav--next{top:-.33em}}.picker__nav--prev{left:-1em;padding-right:1.25em}@media (min-width:24.5em){.picker__nav--prev{padding-right:1.5em}}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__nav--next{padding-left:1.5em}}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{color:#0089ec;position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--selected,.picker__day--selected:hover{border-color:#0089ec}.picker__day--highlighted{background:#b1dcfb}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{background:#0089ec;color:#fff}.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center}.picker__button--today,.picker__button--clear{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:50%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--today:before,.picker__button--clear:before{position:relative;display:inline-block;height:0}.picker__button--today:before{content:" ";margin-right:.45em;top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{content:"\D7";margin-right:.35em;top:-.1em;color:#e20;vertical-align:top;font-size:1.1em}

View File

@@ -0,0 +1 @@
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--selected,.picker__list-item--selected:hover{border-color:#0089ec;z-index:10}.picker__list-item--highlighted{background:#b1dcfb}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{background:#0089ec;color:#fff}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000;background:#b1dcfb;background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height:40.125em){.picker--time .picker__box{margin-bottom:5em}}

View File

@@ -0,0 +1,3 @@
/*!
* Styling for RTL (right-to-left) languages using pickadate.js
*/.picker{direction:rtl}.picker__nav--next{right:auto;left:-1em}.picker__nav--prev{left:auto;right:-1em}.picker__nav--next:before{border-left:0;border-right:.75em solid #000}.picker__nav--prev:before{border-right:0;border-left:.75em solid #000}

View File

@@ -0,0 +1 @@
$.extend($.fn.pickadate.defaults,{monthsFull:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],weekdaysFull:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],weekdaysShort:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],today:"اليوم",clear:"مسح",format:"yyyy mmmm dd",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември"],monthsShort:["янр","фев","мар","апр","май","юни","юли","авг","сеп","окт","ное","дек"],weekdaysFull:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],weekdaysShort:["нд","пн","вт","ср","чт","пт","сб"],today:"днес",clear:"изтривам",firstDay:1,format:"d mmmm yyyy г.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["nedjelja","ponedjeljak","utorak","srijeda","cetvrtak","petak","subota"],weekdaysShort:["ne","po","ut","sr","če","pe","su"],today:"danas",clear:"izbrisati",firstDay:1,format:"dd. mmmm yyyy.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Gener","Febrer","Març","Abril","Maig","juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],weekdaysFull:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],weekdaysShort:["diu","dil","dim","dmc","dij","div","dis"],today:"avui",clear:"esborrar",firstDay:1,format:"dddd d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthsShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],weekdaysFull:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],weekdaysShort:["ne","po","út","st","čt","pá","so"],today:"dnes",clear:"vymazat",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],weekdaysShort:["søn","man","tir","ons","tor","fre","lør"],today:"i dag",clear:"slet",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],weekdaysFull:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],weekdaysShort:["So","Mo","Di","Mi","Do","Fr","Sa"],today:"Heute",clear:"Löschen",firstDay:1,format:"dddd, dd. mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],weekdaysFull:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],weekdaysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],today:"σήμερα",clear:"Διαγραφή",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],weekdaysFull:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],weekdaysShort:["dom","lun","mar","mié","jue","vie","sab"],today:"hoy",clear:"borrar",firstDay:1,format:"dddd d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],monthsShort:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],weekdaysFull:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],weekdaysShort:["püh","esm","tei","kol","nel","ree","lau"],today:"täna",clear:"kustutama",firstDay:1,format:"d. mmmm yyyy. a",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthsShort:["urt","ots","mar","api","mai","eka","uzt","abu","ira","urr","aza","abe"],weekdaysFull:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],weekdaysShort:["ig.","al.","ar.","az.","og.","or.","lr."],today:"gaur",clear:"garbitu",firstDay:1,format:"dddd, yyyy(e)ko mmmmren da",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],weekdaysFull:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],weekdaysShort:["su","ma","ti","ke","to","pe","la"],today:"tänään",clear:"tyhjennä",firstDay:1,format:"d.m.yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fev","Mar","Avr","Mai","Juin","Juil","Aou","Sep","Oct","Nov","Dec"],weekdaysFull:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],weekdaysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],today:"Aujourd'hui",clear:"Effacer",firstDay:1,format:"dd mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],weekdaysFull:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום ששי","יום שבת"],weekdaysShort:["א","ב","ג","ד","ה","ו","ש"],today:"היום",clear:"למחוק",format:"yyyy mmmmב d dddd",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["sijećanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],monthsShort:["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],weekdaysFull:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned","pon","uto","sri","čet","pet","sub"],today:"danas",clear:"izbrisati",firstDay:1,format:"d. mmmm yyyy.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["január","február","március","aprilis","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","febr","márc","apr","máj","jún","júl","aug","szept","okt","nov","dec"],weekdaysFull:["vasámap","hétfö","kedd","szerda","csütörtök","péntek","szombat"],weekdaysShort:["V","H","K","SZ","CS","P","SZ"],today:"ma",clear:"töröl",firstDay:1,format:"yyyy. mmmm dd.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],weekdaysFull:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],weekdaysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],today:"hari ini",clear:"menghapus",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],monthsShort:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],weekdaysFull:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],weekdaysShort:["dom","lun","mar","mer","gio","ven","sab"],today:"oggi",clear:"cancellare",firstDay:1,format:"dddd d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],weekdaysFull:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],weekdaysShort:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],today:"今日",clear:"消去",firstDay:1,format:"yyyy mm dd",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],weekdaysFull:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],weekdaysShort:["일","월","화","수","목","금","토"],today:"오늘",clear:"취소",firstDay:1,format:"yyyy 년 mm 월 dd 일",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","maa","apr","mei","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],weekdaysShort:["zo","ma","di","wo","do","vr","za"],today:"vandaag",clear:"verwijderen",firstDay:1,format:"dddd d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],weekdaysFull:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],weekdaysShort:["søn","man","tir","ons","tor","fre","lør"],today:"i dag",clear:"nullstill",firstDay:1,format:"dd. mmm. yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],monthsShort:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],weekdaysFull:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],weekdaysShort:["N","Pn","Wt","Śr","Cz","Pt","So"],today:"dzisiaj",clear:"usunąć",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],monthsShort:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],weekdaysFull:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],weekdaysShort:["dom","seg","ter","qua","qui","sex","sab"],today:"hoje",clear:"excluir",format:"dddd, d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],monthsShort:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],weekdaysFull:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],weekdaysShort:["dom","seg","ter","qua","qui","sex","sab"],today:"hoje",clear:"excluir",format:"d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],monthsShort:["ian","feb","mar","apr","mai","iun","iul","aug","sep","oct","noi","dec"],weekdaysFull:["duminică","luni","marţi","miercuri","joi","vineri","sâmbătă"],weekdaysShort:["D","L","Ma","Mi","J","V","S"],today:"azi",clear:"șterge",firstDay:1,format:"dd mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],weekdaysFull:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],weekdaysShort:["вс","пн","вт","ср","чт","пт","сб"],today:"сегодня",clear:"удалить",firstDay:1,format:"d mmmm yyyy г.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthsShort:["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],weekdaysFull:["nedeļľa","pondelok","utorok","streda","š̌švrtok","piatok","sobota"],weekdaysShort:["Ne","Po","Ut","St","Št","Pi","So"],today:"dnes",clear:"vymazať",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],weekdaysShort:["sön","mån","tis","ons","tor","fre","lör"],today:"i dag",clear:"bort",firstDay:1,format:"d/m yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],weekdaysFull:["อาทติย","จันทร","องัคาร","พุธ","พฤหสั บดี","ศกุร","เสาร"],weekdaysShort:["อ.","จ.","อ.","พ.","พฤ.","ศ.","ส."],today:"วันนี้",clear:"ลบ",format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],weekdaysFull:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],weekdaysShort:["Pzr","Pzt","Sal","Çrş","Prş","Cum","Cmt"],today:"bugün",clear:"sil",firstDay:1,format:"dd mmmm yyyy dddd",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"],monthsShort:["січ","лют","бер","кві","тра","чер","лип","сер","вер","жов","лис","гру"],weekdaysFull:["неділя","понеділок","вівторок","середа","четвер","п‘ятниця","субота"],weekdaysShort:["нд","пн","вт","ср","чт","пт","сб"],today:"сьогодні",clear:"викреслити",firstDay:1,format:"dd mmmm yyyy p.",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一","二","三","四","五","六","七","八","九","十","十一","十二"],weekdaysFull:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],weekdaysShort:["日","一","二","三","四","五","六"],today:"今日",clear:"删",firstDay:1,format:"yyyy 年 mm 月 dd 日",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1 @@
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一","二","三","四","五","六","七","八","九","十","十一","十二"],weekdaysFull:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],weekdaysShort:["日","一","二","三","四","五","六"],today:"今天",clear:"清除",firstDay:1,format:"yyyy 年 mm 月 dd 日",formatSubmit:"yyyy/mm/dd"});

View File

@@ -0,0 +1,133 @@
/*jshint
asi: true,
unused: true,
boss: true,
loopfunc: true,
eqnull: true
*/
/*!
* Legacy browser support
*/
// Map array support
if ( ![].map ) {
Array.prototype.map = function ( callback, self ) {
var array = this, len = array.length, newArray = new Array( len )
for ( var i = 0; i < len; i++ ) {
if ( i in array ) {
newArray[ i ] = callback.call( self, array[ i ], i, array )
}
}
return newArray
}
}
// Filter array support
if ( ![].filter ) {
Array.prototype.filter = function( callback ) {
if ( this == null ) throw new TypeError()
var t = Object( this ), len = t.length >>> 0
if ( typeof callback != 'function' ) throw new TypeError()
var newArray = [], thisp = arguments[ 1 ]
for ( var i = 0; i < len; i++ ) {
if ( i in t ) {
var val = t[ i ]
if ( callback.call( thisp, val, i, t ) ) newArray.push( val )
}
}
return newArray
}
}
// Index of array support
if ( ![].indexOf ) {
Array.prototype.indexOf = function( searchElement ) {
if ( this == null ) throw new TypeError()
var t = Object( this ), len = t.length >>> 0
if ( len === 0 ) return -1
var n = 0
if ( arguments.length > 1 ) {
n = Number( arguments[ 1 ] )
if ( n != n ) {
n = 0
}
else if ( n !== 0 && n != Infinity && n != -Infinity ) {
n = ( n > 0 || -1 ) * Math.floor( Math.abs( n ) )
}
}
if ( n >= len ) return -1
var k = n >= 0 ? n : Math.max( len - Math.abs( n ), 0 )
for ( ; k < len; k++ ) {
if ( k in t && t[ k ] === searchElement ) return k
}
return -1
}
}
/*!
* Cross-Browser Split 1.1.1
* Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
* Available under the MIT License
* http://blog.stevenlevithan.com/archives/cross-browser-split
*/
var nativeSplit = String.prototype.split, compliantExecNpcg = /()??/.exec('')[1] === undefined
String.prototype.split = function(separator, limit) {
var str = this
if (Object.prototype.toString.call(separator) !== '[object RegExp]') {
return nativeSplit.call(str, separator, limit)
}
var output = [],
flags = (separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.extended ? 'x' : '') +
(separator.sticky ? 'y' : ''),
lastLastIndex = 0,
separator2, match, lastIndex, lastLength
separator = new RegExp(separator.source, flags + 'g')
str += ''
if (!compliantExecNpcg) {
separator2 = new RegExp('^' + separator.source + '$(?!\\s)', flags)
}
limit = limit === undefined ? -1 >>> 0 : limit >>> 0
while (match = separator.exec(str)) {
lastIndex = match.index + match[0].length
if (lastIndex > lastLastIndex) {
output.push(str.slice(lastLastIndex, match.index))
if (!compliantExecNpcg && match.length > 1) {
match[0].replace(separator2, function () {
for (var i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) {
match[i] = undefined
}
}
})
}
if (match.length > 1 && match.index < str.length) {
Array.prototype.push.apply(output, match.slice(1))
}
lastLength = match[0].length
lastLastIndex = lastIndex
if (output.length >= limit) {
break
}
}
if (separator.lastIndex === match.index) {
separator.lastIndex++
}
}
if (lastLastIndex === str.length) {
if (lastLength || !separator.test('')) {
output.push('')
}
} else {
output.push(str.slice(lastLastIndex))
}
return output.length > limit ? output.slice(0, limit) : output
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,845 @@
/*!
* pickadate.js v3.3.2, 2013/12/28
* By Amsul, http://amsul.ca
* Hosted on http://amsul.github.io/pickadate.js
* Licensed under MIT
*/
/*jshint
debug: true,
devel: true,
browser: true,
asi: true,
unused: true,
boss: true,
eqnull: true
*/
(function ( factory ) {
// Register as an anonymous module.
if ( typeof define === 'function' && define.amd )
define( 'picker', ['jquery'], factory )
// Or using browser globals.
else this.Picker = factory( jQuery )
}(function( $ ) {
var $document = $( document )
/**
* The picker constructor that creates a blank picker.
*/
function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
// If theres no element, return the picker constructor.
if ( !ELEMENT ) return PickerConstructor
var
// The state of the picker.
STATE = {
id: Math.abs( ~~( Math.random() * 1e9 ) )
},
// Merge the defaults and options passed.
SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},
// Merge the default classes with the settings classes.
CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),
// The element node wrapper into a jQuery object.
$ELEMENT = $( ELEMENT ),
// Pseudo picker constructor.
PickerInstance = function() {
return this.start()
},
// The picker prototype.
P = PickerInstance.prototype = {
constructor: PickerInstance,
$node: $ELEMENT,
/**
* Initialize everything
*/
start: function() {
// If its already started, do nothing.
if ( STATE && STATE.start ) return P
// Update the picker states.
STATE.methods = {}
STATE.start = true
STATE.open = false
STATE.type = ELEMENT.type
// Confirm focus state, convert into text input to remove UA stylings,
// and set as readonly to prevent keyboard popup.
ELEMENT.autofocus = ELEMENT == document.activeElement
ELEMENT.type = 'text'
ELEMENT.readOnly = !SETTINGS.editable
// Create a new picker component with the settings.
P.component = new COMPONENT( P, SETTINGS )
// Create the picker root with a new wrapped holder and bind the events.
P.$root = $( PickerConstructor._.node( 'div', createWrappedComponent(), CLASSES.picker ) ).
on({
// When something within the root is focused, stop from bubbling
// to the doc and remove the “focused” state from the root.
focusin: function( event ) {
P.$root.removeClass( CLASSES.focused )
event.stopPropagation()
},
// When something within the root holder is clicked, stop it
// from bubbling to the doc.
'mousedown click': function( event ) {
var target = event.target
// Make sure the target isnt the root holder so it can bubble up.
if ( target != P.$root.children()[ 0 ] ) {
event.stopPropagation()
// * For mousedown events, cancel the default action in order to
// prevent cases where focus is shifted onto external elements
// when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).
// Also, for Firefox, dont prevent action on the `option` element.
if ( event.type == 'mousedown' && !$( target ).is( ':input' ) && target.nodeName != 'OPTION' ) {
event.preventDefault()
// Re-focus onto the element so that users can click away
// from elements focused within the picker.
ELEMENT.focus()
}
}
}
}).
// If theres a click on an actionable element, carry out the actions.
on( 'click', '[data-pick], [data-nav], [data-clear]', function() {
var $target = $( this ),
targetData = $target.data(),
targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),
// * For IE, non-focusable elements can be active elements as well
// (http://stackoverflow.com/a/2684561).
activeElement = document.activeElement
activeElement = activeElement && ( activeElement.type || activeElement.href )
// If its disabled or nothing inside is actively focused, re-focus the element.
if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {
ELEMENT.focus()
}
// If something is superficially changed, update the `highlight` based on the `nav`.
if ( targetData.nav && !targetDisabled ) {
P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )
}
// If something is picked, set `select` then close with focus.
else if ( PickerConstructor._.isInteger( targetData.pick ) && !targetDisabled ) {
P.set( 'select', targetData.pick ).close( true )
}
// If a “clear” button is pressed, empty the values and close with focus.
else if ( targetData.clear ) {
P.clear().close( true )
}
}) //P.$root
// If theres a format for the hidden input element, create the element.
if ( SETTINGS.formatSubmit ) {
P._hidden = $(
'<input ' +
'type=hidden ' +
// Create the name by using the original input plus a prefix and suffix.
'name="' + ( typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '' ) +
ELEMENT.name +
( typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' ) +
'"' +
// If the element has a value, set the hidden value as well.
( $ELEMENT.data( 'value' ) || ELEMENT.value ?
' value="' + PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.formatSubmit, P.component.item.select ] ) + '"' :
''
) +
'>'
)[ 0 ]
}
// Prepare the input element.
$ELEMENT.
// Store the picker data by component name.
data( NAME, P ).
// Add the “input” class name.
addClass( CLASSES.input ).
// If theres a `data-value`, update the value of the element.
val( $ELEMENT.data( 'value' ) ? PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.format, P.component.item.select ] ) : ELEMENT.value ).
// Insert the hidden input after the element.
after( P._hidden ).
// On focus/click, open the picker and adjust the root “focused” state.
on( 'focus.P' + STATE.id + ' click.P' + STATE.id, focusToOpen ).
// If the value changes, update the hidden input with the correct format.
on( 'change.P' + STATE.id, function() {
if ( P._hidden ) {
P._hidden.value = ELEMENT.value ? PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.formatSubmit, P.component.item.select ] ) : ''
}
})
// Only bind keydown events if the element isnt editable.
if ( !SETTINGS.editable ) $ELEMENT.
// Handle keyboard event based on the picker being opened or not.
on( 'keydown.P' + STATE.id, function( event ) {
var keycode = event.keyCode,
// Check if one of the delete keys was pressed.
isKeycodeDelete = /^(8|46)$/.test( keycode )
// For some reason IE clears the input value on “escape”.
if ( keycode == 27 ) {
P.close()
return false
}
// Check if `space` or `delete` was pressed or the picker is closed with a key movement.
if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[ keycode ] ) {
// Prevent it from moving the page and bubbling to doc.
event.preventDefault()
event.stopPropagation()
// If `delete` was pressed, clear the values and close the picker.
// Otherwise open the picker.
if ( isKeycodeDelete ) { P.clear().close() }
else { P.open() }
}
})
// Insert the root as specified in the settings.
if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )
else $ELEMENT.after( P.$root )
// Bind the default component and settings events.
P.on({
start: P.component.onStart,
render: P.component.onRender,
stop: P.component.onStop,
open: P.component.onOpen,
close: P.component.onClose,
set: P.component.onSet
}).on({
start: SETTINGS.onStart,
render: SETTINGS.onRender,
stop: SETTINGS.onStop,
open: SETTINGS.onOpen,
close: SETTINGS.onClose,
set: SETTINGS.onSet
})
// If the element has autofocus, open the picker.
if ( ELEMENT.autofocus ) {
P.open()
}
// Trigger queued the “start” and “render” events.
return P.trigger( 'start' ).trigger( 'render' )
}, //start
/**
* Render a new picker
*/
render: function( entireComponent ) {
// Insert a new component holder in the root or box.
if ( entireComponent ) P.$root.html( createWrappedComponent() )
else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )
// Trigger the queued “render” events.
return P.trigger( 'render' )
}, //render
/**
* Destroy everything
*/
stop: function() {
// If its already stopped, do nothing.
if ( !STATE.start ) return P
// Then close the picker.
P.close()
// Remove the hidden field.
if ( P._hidden ) {
P._hidden.parentNode.removeChild( P._hidden )
}
// Remove the root.
P.$root.remove()
// Remove the input class, remove the stored data, and unbind
// the events (after a tick for IE - see `P.close`).
$ELEMENT.removeClass( CLASSES.input ).removeData( NAME )
setTimeout( function() {
$ELEMENT.off( '.P' + STATE.id )
}, 0)
// Restore the element state
ELEMENT.type = STATE.type
ELEMENT.readOnly = false
// Trigger the queued “stop” events.
P.trigger( 'stop' )
// Reset the picker states.
STATE.methods = {}
STATE.start = false
return P
}, //stop
/*
* Open up the picker
*/
open: function( dontGiveFocus ) {
// If its already open, do nothing.
if ( STATE.open ) return P
// Add the “active” class.
$ELEMENT.addClass( CLASSES.active )
// Add the “opened” class to the picker root.
P.$root.addClass( CLASSES.opened )
// If we have to give focus, bind the element and doc events.
if ( dontGiveFocus !== false ) {
// Set it as open.
STATE.open = true
// Pass focus to the elements jQuery object.
$ELEMENT.trigger( 'focus' )
// Bind the document events.
$document.on( 'click.P' + STATE.id + ' focusin.P' + STATE.id, function( event ) {
var target = event.target
// If the target of the event is not the element, close the picker picker.
// * Dont worry about clicks or focusins on the root because those dont bubble up.
// Also, for Firefox, a click on an `option` element bubbles up directly
// to the doc. So make sure the target wasn't the doc.
if ( target != ELEMENT && target != document ) {
// If the target was the holder that covers the screen,
// keep the element focused to maintain tabindex.
P.close( target === P.$root.children()[0] )
}
}).on( 'keydown.P' + STATE.id, function( event ) {
var
// Get the keycode.
keycode = event.keyCode,
// Translate that to a selection change.
keycodeToMove = P.component.key[ keycode ],
// Grab the target.
target = event.target
// On escape, close the picker and give focus.
if ( keycode == 27 ) {
P.close( true )
}
// Check if there is a key movement or “enter” keypress on the element.
else if ( target == ELEMENT && ( keycodeToMove || keycode == 13 ) ) {
// Prevent the default action to stop page movement.
event.preventDefault()
// Trigger the key movement action.
if ( keycodeToMove ) {
PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )
}
// On “enter”, if the highlighted item isnt disabled, set the value and close.
else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {
P.set( 'select', P.component.item.highlight ).close()
}
}
// If the target is within the root and “enter” is pressed,
// prevent the default action and trigger a click on the target instead.
else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {
event.preventDefault()
target.click()
}
})
}
// Trigger the queued “open” events.
return P.trigger( 'open' )
}, //open
/**
* Close the picker
*/
close: function( giveFocus ) {
// If we need to give focus, do it before changing states.
if ( giveFocus ) {
// ....ah yes! It wouldve been incomplete without a crazy workaround for IE :|
// The focus is triggered *after* the close has completed - causing it
// to open again. So unbind and rebind the event at the next tick.
$ELEMENT.off( 'focus.P' + STATE.id ).trigger( 'focus' )
setTimeout( function() {
$ELEMENT.on( 'focus.P' + STATE.id, focusToOpen )
}, 0 )
}
// Remove the “active” class.
$ELEMENT.removeClass( CLASSES.active )
// Remove the “opened” and “focused” class from the picker root.
P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )
// If its already closed, do nothing more.
if ( !STATE.open ) return P
// Set it as closed.
STATE.open = false
// Unbind the document events.
$document.off( '.P' + STATE.id )
// Trigger the queued “close” events.
return P.trigger( 'close' )
}, //close
/**
* Clear the values
*/
clear: function() {
return P.set( 'clear' )
}, //clear
/**
* Set something
*/
set: function( thing, value, options ) {
var thingItem, thingValue,
thingIsObject = $.isPlainObject( thing ),
thingObject = thingIsObject ? thing : {}
// Make sure we have usable options.
options = thingIsObject && $.isPlainObject( value ) ? value : options || {}
if ( thing ) {
// If the thing isnt an object, make it one.
if ( !thingIsObject ) {
thingObject[ thing ] = value
}
// Go through the things of items to set.
for ( thingItem in thingObject ) {
// Grab the value of the thing.
thingValue = thingObject[ thingItem ]
// First, if the item exists and theres a value, set it.
if ( P.component.item[ thingItem ] ) {
P.component.set( thingItem, thingValue, options )
}
// Then, check to update the element value and broadcast a change.
if ( thingItem == 'select' || thingItem == 'clear' ) {
$ELEMENT.val( thingItem == 'clear' ? '' :
PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.format, P.component.get( thingItem ) ] )
).trigger( 'change' )
}
}
// Render a new picker.
P.render()
}
// When the method isnt muted, trigger queued “set” events and pass the `thingObject`.
return options.muted ? P : P.trigger( 'set', thingObject )
}, //set
/**
* Get something
*/
get: function( thing, format ) {
// Make sure theres something to get.
thing = thing || 'value'
// If a picker state exists, return that.
if ( STATE[ thing ] != null ) {
return STATE[ thing ]
}
// Return the value, if that.
if ( thing == 'value' ) {
return ELEMENT.value
}
// Check if a component item exists, return that.
if ( P.component.item[ thing ] ) {
if ( typeof format == 'string' ) {
return PickerConstructor._.trigger( P.component.formats.toString, P.component, [ format, P.component.get( thing ) ] )
}
return P.component.get( thing )
}
}, //get
/**
* Bind events on the things.
*/
on: function( thing, method ) {
var thingName, thingMethod,
thingIsObject = $.isPlainObject( thing ),
thingObject = thingIsObject ? thing : {}
if ( thing ) {
// If the thing isnt an object, make it one.
if ( !thingIsObject ) {
thingObject[ thing ] = method
}
// Go through the things to bind to.
for ( thingName in thingObject ) {
// Grab the method of the thing.
thingMethod = thingObject[ thingName ]
// Make sure the thing methods collection exists.
STATE.methods[ thingName ] = STATE.methods[ thingName ] || []
// Add the method to the relative method collection.
STATE.methods[ thingName ].push( thingMethod )
}
}
return P
}, //on
/**
* Fire off method events.
*/
trigger: function( name, data ) {
var methodList = STATE.methods[ name ]
if ( methodList ) {
methodList.map( function( method ) {
PickerConstructor._.trigger( method, P, [ data ] )
})
}
return P
} //trigger
} //PickerInstance.prototype
/**
* Wrap the picker holder components together.
*/
function createWrappedComponent() {
// Create a picker wrapper holder
return PickerConstructor._.node( 'div',
// Create a picker wrapper node
PickerConstructor._.node( 'div',
// Create a picker frame
PickerConstructor._.node( 'div',
// Create a picker box node
PickerConstructor._.node( 'div',
// Create the components nodes.
P.component.nodes( STATE.open ),
// The picker box class
CLASSES.box
),
// Picker wrap class
CLASSES.wrap
),
// Picker frame class
CLASSES.frame
),
// Picker holder class
CLASSES.holder
) //endreturn
} //createWrappedComponent
// Separated for IE
function focusToOpen( event ) {
// Stop the event from propagating to the doc.
event.stopPropagation()
// If its a focus event, add the “focused” class to the root.
if ( event.type == 'focus' ) P.$root.addClass( CLASSES.focused )
// And then finally open the picker.
P.open()
}
// Return a new picker instance.
return new PickerInstance()
} //PickerConstructor
/**
* The default classes and prefix to use for the HTML classes.
*/
PickerConstructor.klasses = function( prefix ) {
prefix = prefix || 'picker'
return {
picker: prefix,
opened: prefix + '--opened',
focused: prefix + '--focused',
input: prefix + '__input',
active: prefix + '__input--active',
holder: prefix + '__holder',
frame: prefix + '__frame',
wrap: prefix + '__wrap',
box: prefix + '__box'
}
} //PickerConstructor.klasses
/**
* PickerConstructor helper methods.
*/
PickerConstructor._ = {
/**
* Create a group of nodes. Expects:
* `
{
min: {Integer},
max: {Integer},
i: {Integer},
node: {String},
item: {Function}
}
* `
*/
group: function( groupObject ) {
var
// Scope for the looped object
loopObjectScope,
// Create the nodes list
nodesList = '',
// The counter starts from the `min`
counter = PickerConstructor._.trigger( groupObject.min, groupObject )
// Loop from the `min` to `max`, incrementing by `i`
for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {
// Trigger the `item` function within scope of the object
loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )
// Splice the subgroup and create nodes out of the sub nodes
nodesList += PickerConstructor._.node(
groupObject.node,
loopObjectScope[ 0 ], // the node
loopObjectScope[ 1 ], // the classes
loopObjectScope[ 2 ] // the attributes
)
}
// Return the list of nodes
return nodesList
}, //group
/**
* Create a dom node string
*/
node: function( wrapper, item, klass, attribute ) {
// If the item is false-y, just return an empty string
if ( !item ) return ''
// If the item is an array, do a join
item = $.isArray( item ) ? item.join( '' ) : item
// Check for the class
klass = klass ? ' class="' + klass + '"' : ''
// Check for any attributes
attribute = attribute ? ' ' + attribute : ''
// Return the wrapped item
return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>'
}, //node
/**
* Lead numbers below 10 with a zero.
*/
lead: function( number ) {
return ( number < 10 ? '0': '' ) + number
},
/**
* Trigger a function otherwise return the value.
*/
trigger: function( callback, scope, args ) {
return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback
},
/**
* If the second character is a digit, length is 2 otherwise 1.
*/
digits: function( string ) {
return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1
},
/**
* Tell if something is a date object.
*/
isDate: function( value ) {
return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )
},
/**
* Tell if something is an integer.
*/
isInteger: function( value ) {
return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0
}
} //PickerConstructor._
/**
* Extend the picker with a component and defaults.
*/
PickerConstructor.extend = function( name, Component ) {
// Extend jQuery.
$.fn[ name ] = function( options, action ) {
// Grab the component data.
var componentData = this.data( name )
// If the picker is requested, return the data object.
if ( options == 'picker' ) {
return componentData
}
// If the component data exists and `options` is a string, carry out the action.
if ( componentData && typeof options == 'string' ) {
PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )
return this
}
// Otherwise go through each matched element and if the component
// doesnt exist, create a new picker using `this` element
// and merging the defaults and options with a deep copy.
return this.each( function() {
var $this = $( this )
if ( !$this.data( name ) ) {
new PickerConstructor( this, name, Component, options )
}
})
}
// Set the defaults.
$.fn[ name ].defaults = Component.defaults
} //PickerConstructor.extend
// Expose the picker constructor.
return PickerConstructor
}));

View File

@@ -0,0 +1,762 @@
/*!
* Time picker for pickadate.js v3.3.2
* http://amsul.github.io/pickadate.js/time.htm
*/
/*jshint
debug: true,
devel: true,
browser: true,
asi: true,
unused: true,
boss: true
*/
(function ( factory ) {
// Register as an anonymous module.
if ( typeof define === 'function' && define.amd )
define( ['picker','jquery'], factory )
// Or using browser globals.
else factory( Picker, jQuery )
}(function( Picker, $ ) {
/**
* Globals and constants
*/
var HOURS_IN_DAY = 24,
MINUTES_IN_HOUR = 60,
HOURS_TO_NOON = 12,
MINUTES_IN_DAY = HOURS_IN_DAY * MINUTES_IN_HOUR
/**
* The time picker constructor
*/
function TimePicker( picker, settings ) {
var clock = this,
elementDataValue = picker.$node.data( 'value' )
clock.settings = settings
// The queue of methods that will be used to build item objects.
clock.queue = {
interval: 'i',
min: 'measure create',
max: 'measure create',
now: 'now create',
select: 'parse create validate',
highlight: 'create validate',
view: 'create validate',
disable: 'flipItem',
enable: 'flipItem'
}
// The component's item object.
clock.item = {}
clock.item.interval = settings.interval || 30
clock.item.disable = ( settings.disable || [] ).slice( 0 )
clock.item.enable = -(function( collectionDisabled ) {
return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1
})( clock.item.disable )
clock.
set( 'min', settings.min ).
set( 'max', settings.max ).
set( 'now' ).
// Setting the `select` also sets the `highlight` and `view`.
set( 'select',
// If there's a `value` or `data-value`, use that with formatting.
// Otherwise default to the minimum selectable time.
elementDataValue || picker.$node[ 0 ].value || clock.item.min,
// Use the relevant format.
{ format: elementDataValue ? settings.formatSubmit : settings.format }
)
// The keycode to movement mapping.
clock.key = {
40: 1, // Down
38: -1, // Up
39: 1, // Right
37: -1, // Left
go: function( timeChange ) {
clock.set( 'highlight', clock.item.highlight.pick + timeChange * clock.item.interval, { interval: timeChange * clock.item.interval } )
this.render()
}
}
// Bind some picker events.
picker.
on( 'render', function() {
var $pickerHolder = picker.$root.children(),
$viewset = $pickerHolder.find( '.' + settings.klass.viewset )
if ( $viewset.length ) {
$pickerHolder[ 0 ].scrollTop = ~~$viewset.position().top - ( $viewset[ 0 ].clientHeight * 2 )
}
}).
on( 'open', function() {
picker.$root.find( 'button' ).attr( 'disable', false )
}).
on( 'close', function() {
picker.$root.find( 'button' ).attr( 'disable', true )
})
} //TimePicker
/**
* Set a timepicker item object.
*/
TimePicker.prototype.set = function( type, value, options ) {
var clock = this
// Go through the queue of methods, and invoke the function. Update this
// as the time unit, and set the final resultant as this item type.
// * In the case of `enable`, keep the queue but set `disable` instead.
// And in the case of `flip`, keep the queue but set `enable` instead.
clock.item[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = clock.queue[ type ].split( ' ' ).map( function( method ) {
return value = clock[ method ]( type, value, options )
}).pop()
// Check if we need to cascade through more updates.
if ( type == 'select' ) {
clock.set( 'highlight', clock.item.select, options )
}
else if ( type == 'highlight' ) {
clock.set( 'view', clock.item.highlight, options )
}
else if ( type == 'interval' ) {
clock.
set( 'min', clock.item.min, options ).
set( 'max', clock.item.max, options )
}
else if ( ( type == 'flip' || type == 'min' || type == 'max' || type == 'disable' || type == 'enable' ) && clock.item.select && clock.item.highlight ) {
if ( type == 'min' ) {
clock.set( 'max', clock.item.max, options )
}
clock.
set( 'select', clock.item.select, options ).
set( 'highlight', clock.item.highlight, options )
}
return clock
} //TimePicker.prototype.set
/**
* Get a timepicker item object.
*/
TimePicker.prototype.get = function( type ) {
return this.item[ type ]
} //TimePicker.prototype.get
/**
* Create a picker time object.
*/
TimePicker.prototype.create = function( type, value, options ) {
var clock = this
// If theres no value, use the type as the value.
value = value === undefined ? type : value
// If its a date object, convert it into an array.
if ( Picker._.isDate( value ) ) {
value = [ value.getHours(), value.getMinutes() ]
}
// If its an object, use the “pick” value.
if ( $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
value = value.pick
}
// If its an array, convert it into minutes.
else if ( $.isArray( value ) ) {
value = +value[ 0 ] * MINUTES_IN_HOUR + (+value[ 1 ])
}
// If no valid value is passed, set it to “now”.
else if ( !Picker._.isInteger( value ) ) {
value = clock.now( type, value, options )
}
// If were setting the max, make sure its greater than the min.
if ( type == 'max' && value < clock.item.min.pick ) {
value += MINUTES_IN_DAY
}
// If the value doesnt fall directly on the interval,
// add one interval to indicate it as “passed”.
if ( type != 'min' && type != 'max' && (value - clock.item.min.pick) % clock.item.interval !== 0 ) {
value += clock.item.interval
}
// Normalize it into a “reachable” interval.
value = clock.normalize( type, value, options )
// Return the compiled object.
return {
// Divide to get hours from minutes.
hour: ~~( HOURS_IN_DAY + value / MINUTES_IN_HOUR ) % HOURS_IN_DAY,
// The remainder is the minutes.
mins: ( MINUTES_IN_HOUR + value % MINUTES_IN_HOUR ) % MINUTES_IN_HOUR,
// The time in total minutes.
time: ( MINUTES_IN_DAY + value ) % MINUTES_IN_DAY,
// Reference to the “relative” value to pick.
pick: value
}
} //TimePicker.prototype.create
/**
* Get the time relative to now.
*/
TimePicker.prototype.now = function( type, value/*, options*/ ) {
var date = new Date(),
dateMinutes = date.getHours() * MINUTES_IN_HOUR + date.getMinutes()
// Make sure “now” falls within the interval range.
dateMinutes -= dateMinutes % this.item.interval
// If the value is a number, adjust by that many intervals because
// the time has passed. In the case of “midnight” and a negative `min`,
// increase the value by 2. Otherwise increase it by 1.
if ( Picker._.isInteger( value ) ) {
value += type == 'min' && value < 0 && dateMinutes === 0 ? 2 : 1
}
// If the value isnt a number, default to 1 passed interval.
else {
value = 1
}
// Calculate the final relative time.
return value * this.item.interval + dateMinutes
} //TimePicker.prototype.now
/**
* Normalize minutes to be “reachable” based on the min and interval.
*/
TimePicker.prototype.normalize = function( type, value/*, options*/ ) {
var interval = this.item.interval,
// If setting min time, dont shift anything.
// Otherwise get the value and min difference and then
// normalize the difference with the interval.
difference = type == 'min' ? 0 : ( value - this.item.min.pick ) % interval
// If its a negative value, add one interval to keep it as “passed”.
return value - ( difference + ( value < 0 ? interval : 0 ) )
} //TimePicker.prototype.normalize
/**
* Measure the range of minutes.
*/
TimePicker.prototype.measure = function( type, value, options ) {
var clock = this
// If its anything false-y, set it to the default.
if ( !value ) {
value = type == 'min' ? [ 0, 0 ] : [ HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1 ]
}
// If its a literal true, or an integer, make it relative to now.
else if ( value === true || Picker._.isInteger( value ) ) {
value = clock.now( type, value, options )
}
// If its an object already, just normalize it.
else if ( $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
value = clock.normalize( type, value.pick, options )
}
return value
} ///TimePicker.prototype.measure
/**
* Validate an object as enabled.
*/
TimePicker.prototype.validate = function( type, timeObject, options ) {
var clock = this,
interval = options && options.interval ? options.interval : clock.item.interval
// Check if the object is disabled.
if ( clock.disabled( timeObject ) ) {
// Shift with the interval until we reach an enabled time.
timeObject = clock.shift( timeObject, interval )
}
// Scope the object into range.
timeObject = clock.scope( timeObject )
// Do a second check to see if we landed on a disabled min/max.
// In that case, shift using the opposite interval as before.
if ( clock.disabled( timeObject ) ) {
timeObject = clock.shift( timeObject, interval * -1 )
}
// Return the final object.
return timeObject
} //TimePicker.prototype.validate
/**
* Check if an object is disabled.
*/
TimePicker.prototype.disabled = function( timeObject ) {
var
clock = this,
// Filter through the disabled times to check if this is one.
isDisabledMatch = clock.item.disable.filter( function( timeToDisable ) {
// If the time is a number, match the hours.
if ( Picker._.isInteger( timeToDisable ) ) {
return timeObject.hour == timeToDisable
}
// If its an array, create the object and match the times.
if ( $.isArray( timeToDisable ) || Picker._.isDate( timeToDisable ) ) {
return timeObject.pick == clock.create( timeToDisable ).pick
}
})
// If this time matches a disabled time, confirm its not inverted.
isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( timeToDisable ) {
return $.isArray( timeToDisable ) && timeToDisable[2] == 'inverted'
}).length
// If the clock is "enabled" flag is flipped, flip the condition.
return clock.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||
timeObject.pick < clock.item.min.pick ||
timeObject.pick > clock.item.max.pick
} //TimePicker.prototype.disabled
/**
* Shift an object by an interval until we reach an enabled object.
*/
TimePicker.prototype.shift = function( timeObject, interval ) {
var clock = this,
minLimit = clock.item.min.pick,
maxLimit = clock.item.max.pick
interval = interval || clock.item.interval
// Keep looping as long as the time is disabled.
while ( clock.disabled( timeObject ) ) {
// Increase/decrease the time by the interval and keep looping.
timeObject = clock.create( timeObject.pick += interval )
// If we've looped beyond the limits, break out of the loop.
if ( timeObject.pick <= minLimit || timeObject.pick >= maxLimit ) {
break
}
}
// Return the final object.
return timeObject
} //TimePicker.prototype.shift
/**
* Scope an object to be within range of min and max.
*/
TimePicker.prototype.scope = function( timeObject ) {
var minLimit = this.item.min.pick,
maxLimit = this.item.max.pick
return this.create( timeObject.pick > maxLimit ? maxLimit : timeObject.pick < minLimit ? minLimit : timeObject )
} //TimePicker.prototype.scope
/**
* Parse a string into a usable type.
*/
TimePicker.prototype.parse = function( type, value, options ) {
var clock = this,
parsingObject = {}
if ( !value || Picker._.isInteger( value ) || $.isArray( value ) || Picker._.isDate( value ) || $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
return value
}
// We need a `.format` to parse the value.
if ( !( options && options.format ) ) {
throw "Need a formatting option to parse this.."
}
// Convert the format into an array and then map through it.
clock.formats.toArray( options.format ).map( function( label ) {
var
// Grab the formatting label.
formattingLabel = clock.formats[ label ],
// The format length is from the formatting label function or the
// label length without the escaping exclamation (!) mark.
formatLength = formattingLabel ? Picker._.trigger( formattingLabel, clock, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length
// If there's a format label, split the value up to the format length.
// Then add it to the parsing object with appropriate label.
if ( formattingLabel ) {
parsingObject[ label ] = value.substr( 0, formatLength )
}
// Update the time value as the substring from format length to end.
value = value.substr( formatLength )
})
return +parsingObject.i + MINUTES_IN_HOUR * (
+( parsingObject.H || parsingObject.HH ) ||
( +( parsingObject.h || parsingObject.hh ) % 12 + ( /^p/i.test( parsingObject.A || parsingObject.a ) ? 12 : 0 ) )
)
} //TimePicker.prototype.parse
/**
* Various formats to display the object in.
*/
TimePicker.prototype.formats = {
h: function( string, timeObject ) {
// If there's string, then get the digits length.
// Otherwise return the selected hour in "standard" format.
return string ? Picker._.digits( string ) : timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON
},
hh: function( string, timeObject ) {
// If there's a string, then the length is always 2.
// Otherwise return the selected hour in "standard" format with a leading zero.
return string ? 2 : Picker._.lead( timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON )
},
H: function( string, timeObject ) {
// If there's string, then get the digits length.
// Otherwise return the selected hour in "military" format as a string.
return string ? Picker._.digits( string ) : '' + ( timeObject.hour % 24 )
},
HH: function( string, timeObject ) {
// If there's string, then get the digits length.
// Otherwise return the selected hour in "military" format with a leading zero.
return string ? Picker._.digits( string ) : Picker._.lead( timeObject.hour % 24 )
},
i: function( string, timeObject ) {
// If there's a string, then the length is always 2.
// Otherwise return the selected minutes.
return string ? 2 : Picker._.lead( timeObject.mins )
},
a: function( string, timeObject ) {
// If there's a string, then the length is always 4.
// Otherwise check if it's more than "noon" and return either am/pm.
return string ? 4 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'a.m.' : 'p.m.'
},
A: function( string, timeObject ) {
// If there's a string, then the length is always 2.
// Otherwise check if it's more than "noon" and return either am/pm.
return string ? 2 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'AM' : 'PM'
},
// Create an array by splitting the formatting string passed.
toArray: function( formatString ) { return formatString.split( /(h{1,2}|H{1,2}|i|a|A|!.)/g ) },
// Format an object into a string using the formatting options.
toString: function ( formatString, itemObject ) {
var clock = this
return clock.formats.toArray( formatString ).map( function( label ) {
return Picker._.trigger( clock.formats[ label ], clock, [ 0, itemObject ] ) || label.replace( /^!/, '' )
}).join( '' )
}
} //TimePicker.prototype.formats
/**
* Flip an item as enabled or disabled.
*/
TimePicker.prototype.flipItem = function( type, value/*, options*/ ) {
var clock = this,
collection = clock.item.disable,
isFlippedBase = clock.item.enable === -1
// Flip the enabled and disabled times.
if ( value == 'flip' ) {
clock.item.enable = isFlippedBase ? 1 : -1
}
// Reset the collection and enable the base state.
else if ( ( type == 'enable' && value === true ) || ( type == 'disable' && value === false ) ) {
clock.item.enable = 1
collection = []
}
// Reset the collection and disable the base state.
else if ( ( type == 'enable' && value === false ) || ( type == 'disable' && value === true ) ) {
clock.item.enable = -1
collection = []
}
// Make sure a collection of things was passed to add/remove.
else if ( $.isArray( value ) ) {
// Check if we have to add/remove from collection.
if ( isFlippedBase && type == 'enable' || !isFlippedBase && type == 'disable' ) {
collection = clock.addDisabled( collection, value )
}
else if ( !isFlippedBase && type == 'enable' ) {
collection = clock.addEnabled( collection, value )
}
else if ( isFlippedBase && type == 'disable' ) {
collection = clock.removeDisabled( collection, value )
}
}
return collection
} //TimePicker.prototype.flipItem
/**
* Add an enabled (inverted) item to the disabled collection.
*/
TimePicker.prototype.addEnabled = function( collection, item ) {
var clock = this
// Go through each item to enable.
item.map( function( timeUnit ) {
// Check if the time unit is already within the collection.
if ( clock.filterDisabled( collection, timeUnit, 1 ).length ) {
// Remove the unit directly from the collection.
collection = clock.removeDisabled( collection, [timeUnit] )
// If the unit is an array and it falls within a
// disabled weekday, invert it and then insert it.
if (
$.isArray( timeUnit ) &&
collection.filter( function( disabledHour ) {
return Picker._.isInteger( disabledHour ) && clock.create( timeUnit ).hour === disabledHour
}).length
) {
timeUnit = timeUnit.slice(0)
timeUnit.push( 'inverted' )
collection.push( timeUnit )
}
}
})
// Return the final collection.
return collection
} //TimePicker.prototype.addEnabled
/**
* Add an item to the disabled collection.
*/
TimePicker.prototype.addDisabled = function( collection, item ) {
var clock = this
// Go through each item to disable.
item.map( function( timeUnit ) {
// Add the time unit if it isnt already within the collection.
if ( !clock.filterDisabled( collection, timeUnit ).length ) {
collection.push( timeUnit )
}
// If the time unit is an array and falls within the range, just remove it.
else if ( $.isArray( timeUnit ) && clock.filterDisabled( collection, timeUnit, 1 ).length ) {
collection = clock.removeDisabled( collection, [timeUnit] )
}
})
// Return the final collection.
return collection
} //TimePicker.prototype.addDisabled
/**
* Remove an item from the disabled collection.
*/
TimePicker.prototype.removeDisabled = function( collection, item ) {
var clock = this
// Go through each item to enable.
item.map( function( timeUnit ) {
// Filter each item out of the collection.
collection = clock.filterDisabled( collection, timeUnit, 1 )
})
// Return the final colleciton.
return collection
} //TimePicker.prototype.removeDisabled
/**
* Filter through the disabled collection to find a time unit.
*/
TimePicker.prototype.filterDisabled = function( collection, timeUnit, isRemoving ) {
var timeIsArray = $.isArray( timeUnit )
return collection.filter( function( disabledTimeUnit ) {
var isMatch = !timeIsArray && timeUnit === disabledTimeUnit ||
timeIsArray && $.isArray( disabledTimeUnit ) && timeUnit.toString() === disabledTimeUnit.toString()
return isRemoving ? !isMatch : isMatch
})
} //TimePicker.prototype.filterDisabled
/**
* The division to use for the range intervals.
*/
TimePicker.prototype.i = function( type, value/*, options*/ ) {
return Picker._.isInteger( value ) && value > 0 ? value : this.item.interval
}
/**
* Create a string for the nodes in the picker.
*/
TimePicker.prototype.nodes = function( isOpen ) {
var
clock = this,
settings = clock.settings,
selectedObject = clock.item.select,
highlightedObject = clock.item.highlight,
viewsetObject = clock.item.view,
disabledCollection = clock.item.disable
return Picker._.node( 'ul', Picker._.group({
min: clock.item.min.pick,
max: clock.item.max.pick,
i: clock.item.interval,
node: 'li',
item: function( loopedTime ) {
loopedTime = clock.create( loopedTime )
return [
Picker._.trigger( clock.formats.toString, clock, [ Picker._.trigger( settings.formatLabel, clock, [ loopedTime ] ) || settings.format, loopedTime ] ),
(function( klasses, timeMinutes ) {
if ( selectedObject && selectedObject.pick == timeMinutes ) {
klasses.push( settings.klass.selected )
}
if ( highlightedObject && highlightedObject.pick == timeMinutes ) {
klasses.push( settings.klass.highlighted )
}
if ( viewsetObject && viewsetObject.pick == timeMinutes ) {
klasses.push( settings.klass.viewset )
}
if ( disabledCollection && clock.disabled( loopedTime ) ) {
klasses.push( settings.klass.disabled )
}
return klasses.join( ' ' )
})( [ settings.klass.listItem ], loopedTime.pick ),
'data-pick=' + loopedTime.pick
]
}
}) +
// * For Firefox forms to submit, make sure to set the buttons `type` attribute as “button”.
Picker._.node( 'li', Picker._.node( 'button', settings.clear, settings.klass.buttonClear, 'type=button data-clear=1' + ( isOpen ? '' : ' disable' ) ) ), settings.klass.list )
} //TimePicker.prototype.nodes
/* ==========================================================================
Extend the picker to add the component with the defaults.
========================================================================== */
TimePicker.defaults = (function( prefix ) {
return {
// Clear
clear: 'Clear',
// The format to show on the `input` element
format: 'h:i A',
// The interval between each time
interval: 30,
// Classes
klass: {
picker: prefix + ' ' + prefix + '--time',
holder: prefix + '__holder',
list: prefix + '__list',
listItem: prefix + '__list-item',
disabled: prefix + '__list-item--disabled',
selected: prefix + '__list-item--selected',
highlighted: prefix + '__list-item--highlighted',
viewset: prefix + '__list-item--viewset',
now: prefix + '__list-item--now',
buttonClear: prefix + '__button--clear'
}
}
})( Picker.klasses().picker )
/**
* Extend the picker to add the date picker.
*/
Picker.extend( 'pickatime', TimePicker )
}));

View File

@@ -0,0 +1,109 @@
/* ==========================================================================
$BASE-PICKER
========================================================================== */
/**
* Note: the root picker element should *NOT* be styled more than whats here.
*/
.picker {
font-size: 16px;
text-align: left;
line-height: 1.2;
color: #000000;
position: absolute;
z-index: 10000;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/**
* The picker input element.
*/
.picker__input {
cursor: default;
}
/**
* When the picker is opened, the input element is activated.
*/
.picker__input.picker__input--active {
border-color: #0089ec;
}
/**
* The holder is the only scrollable top-level container element.
*/
.picker__holder {
width: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/*!
* Classic picker styling for pickadate.js
* Demo: http://amsul.github.io/pickadate.js
*/
/**
* Note: the root picker element should *NOT* be styled more than whats here.
*/
.picker {
width: 100%;
}
/**
* The holder is the base of the picker.
*/
.picker__holder {
position: absolute;
background: #ffffff;
border: 1px solid #aaaaaa;
border-top-width: 0;
border-bottom-width: 0;
-webkit-border-radius: 0 0 5px 5px;
-moz-border-radius: 0 0 5px 5px;
border-radius: 0 0 5px 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
min-width: 176px;
max-width: 466px;
max-height: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-moz-opacity: 0;
opacity: 0;
-webkit-transform: translateY(-1em) perspective(600px) rotateX(10deg);
-moz-transform: translateY(-1em) perspective(600px) rotateX(10deg);
transform: translateY(-1em) perspective(600px) rotateX(10deg);
-webkit-transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
-moz-transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
}
/**
* The frame and wrap work together to ensure that
* clicks within the picker dont reach the holder.
*/
.picker__frame {
padding: 1px;
}
.picker__wrap {
margin: -1px;
}
/**
* When the picker opens...
*/
.picker--opened .picker__holder {
max-height: 25em;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
-moz-opacity: 1;
opacity: 1;
border-top-width: 1px;
border-bottom-width: 1px;
-webkit-transform: translateY(0) perspective(600px) rotateX(0);
-moz-transform: translateY(0) perspective(600px) rotateX(0);
transform: translateY(0) perspective(600px) rotateX(0);
-webkit-transition: all 0.15s ease-out, max-height 0, border-width 0;
-moz-transition: all 0.15s ease-out, max-height 0, border-width 0;
transition: all 0.15s ease-out, max-height 0, border-width 0;
-webkit-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
-moz-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
}

View File

@@ -0,0 +1,278 @@
/* ==========================================================================
$BASE-DATE-PICKER
========================================================================== */
/**
* The picker box.
*/
.picker__box {
padding: 0 1em;
}
/**
* The header containing the month and year stuff.
*/
.picker__header {
text-align: center;
position: relative;
margin-top: .75em;
}
/**
* The month and year labels.
*/
.picker__month,
.picker__year {
font-weight: 500;
display: inline-block;
margin-left: .25em;
margin-right: .25em;
}
.picker__year {
color: #999999;
font-size: .8em;
font-style: italic;
}
/**
* The month and year selectors.
*/
.picker__select--month,
.picker__select--year {
border: 1px solid #b7b7b7;
height: 2.5em;
padding: .5em .25em;
margin-left: .25em;
margin-right: .25em;
font-size: .6em;
}
@media (min-width: 24.5em) {
.picker__select--month,
.picker__select--year {
font-size: .8em;
margin-top: -0.5em;
}
}
.picker__select--month {
width: 35%;
}
.picker__select--year {
width: 22.5%;
}
.picker__select--month:focus,
.picker__select--year:focus {
border-color: #0089ec;
}
/**
* The month navigation buttons.
*/
.picker__nav--prev,
.picker__nav--next {
position: absolute;
padding: .5em 1.25em;
width: 1em;
height: 1em;
top: -0.25em;
}
@media (min-width: 24.5em) {
.picker__nav--prev,
.picker__nav--next {
top: -0.33em;
}
}
.picker__nav--prev {
left: -1em;
padding-right: 1.25em;
}
@media (min-width: 24.5em) {
.picker__nav--prev {
padding-right: 1.5em;
}
}
.picker__nav--next {
right: -1em;
padding-left: 1.25em;
}
@media (min-width: 24.5em) {
.picker__nav--next {
padding-left: 1.5em;
}
}
.picker__nav--prev:before,
.picker__nav--next:before {
content: " ";
border-top: .5em solid transparent;
border-bottom: .5em solid transparent;
border-right: 0.75em solid #000000;
width: 0;
height: 0;
display: block;
margin: 0 auto;
}
.picker__nav--next:before {
border-right: 0;
border-left: 0.75em solid #000000;
}
.picker__nav--prev:hover,
.picker__nav--next:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
}
.picker__nav--disabled,
.picker__nav--disabled:hover,
.picker__nav--disabled:before,
.picker__nav--disabled:before:hover {
cursor: default;
background: none;
border-right-color: #f5f5f5;
border-left-color: #f5f5f5;
}
/**
* The calendar table of dates
*/
.picker__table {
text-align: center;
border-collapse: collapse;
border-spacing: 0;
table-layout: fixed;
font-size: inherit;
width: 100%;
margin-top: .75em;
margin-bottom: .5em;
}
@media (min-height: 33.875em) {
.picker__table {
margin-bottom: .75em;
}
}
.picker__table td {
margin: 0;
padding: 0;
}
/**
* The weekday labels
*/
.picker__weekday {
width: 14.285714286%;
font-size: .75em;
padding-bottom: .25em;
color: #999999;
font-weight: 500;
/* Increase the spacing a tad */
}
@media (min-height: 33.875em) {
.picker__weekday {
padding-bottom: .5em;
}
}
/**
* The days on the calendar
*/
.picker__day {
padding: .3125em 0;
font-weight: 200;
border: 1px solid transparent;
}
.picker__day--today {
color: #0089ec;
position: relative;
}
.picker__day--today:before {
content: " ";
position: absolute;
top: 2px;
right: 2px;
width: 0;
height: 0;
border-top: 0.5em solid #0059bc;
border-left: .5em solid transparent;
}
.picker__day--selected,
.picker__day--selected:hover {
border-color: #0089ec;
}
.picker__day--highlighted {
background: #b1dcfb;
}
.picker__day--disabled:before {
border-top-color: #aaaaaa;
}
.picker__day--outfocus {
color: #dddddd;
}
.picker__day--infocus:hover,
.picker__day--outfocus:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
}
.picker__day--highlighted:hover,
.picker--focused .picker__day--highlighted {
background: #0089ec;
color: #ffffff;
}
.picker__day--disabled,
.picker__day--disabled:hover {
background: #f5f5f5;
border-color: #f5f5f5;
color: #dddddd;
cursor: default;
}
.picker__day--highlighted.picker__day--disabled,
.picker__day--highlighted.picker__day--disabled:hover {
background: #bbbbbb;
}
/**
* The footer containing the "today" and "clear" buttons.
*/
.picker__footer {
text-align: center;
}
.picker__button--today,
.picker__button--clear {
border: 1px solid #ffffff;
background: #ffffff;
font-size: .8em;
padding: .66em 0;
font-weight: bold;
width: 50%;
display: inline-block;
vertical-align: bottom;
}
.picker__button--today:hover,
.picker__button--clear:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
border-bottom-color: #b1dcfb;
}
.picker__button--today:focus,
.picker__button--clear:focus {
background: #b1dcfb;
border-color: #0089ec;
outline: none;
}
.picker__button--today:before,
.picker__button--clear:before {
position: relative;
display: inline-block;
height: 0;
}
.picker__button--today:before {
content: " ";
margin-right: .45em;
top: -0.05em;
width: 0;
border-top: 0.66em solid #0059bc;
border-left: .66em solid transparent;
}
.picker__button--clear:before {
content: "\D7";
margin-right: .35em;
top: -0.1em;
color: #ee2200;
vertical-align: top;
font-size: 1.1em;
}
/* ==========================================================================
$CLASSIC-DATE-PICKER
========================================================================== */

View File

@@ -0,0 +1,128 @@
/* ==========================================================================
$BASE-TIME-PICKER
========================================================================== */
/**
* The list of times.
*/
.picker__list {
list-style: none;
padding: 0.75em 0 4.2em;
margin: 0;
}
/**
* The times on the clock.
*/
.picker__list-item {
border-bottom: 1px solid #dddddd;
border-top: 1px solid #dddddd;
margin-bottom: -1px;
position: relative;
background: #ffffff;
padding: .75em 1.25em;
}
@media (min-height: 46.75em) {
.picker__list-item {
padding: .5em 1em;
}
}
/* Hovered time */
.picker__list-item:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
border-color: #0089ec;
z-index: 10;
}
/* Selected time */
.picker__list-item--selected,
.picker__list-item--selected:hover {
border-color: #0089ec;
z-index: 10;
}
/* Highlighted time */
.picker__list-item--highlighted {
background: #b1dcfb;
}
/* Highlighted and hovered/focused time */
.picker__list-item--highlighted:hover,
.picker--focused .picker__list-item--highlighted {
background: #0089ec;
color: #ffffff;
}
/* Disabled time */
.picker__list-item--disabled,
.picker__list-item--disabled:hover,
.picker--focused .picker__list-item--disabled {
background: #f5f5f5;
border-color: #f5f5f5;
color: #dddddd;
cursor: default;
border-color: #dddddd;
z-index: auto;
}
/**
* The clear button
*/
.picker--time .picker__button--clear {
display: block;
width: 80%;
margin: 1em auto 0;
padding: 1em 1.25em;
background: none;
border: 0;
font-weight: 500;
font-size: .67em;
text-align: center;
text-transform: uppercase;
color: #666;
}
.picker--time .picker__button--clear:hover,
.picker--time .picker__button--clear:focus {
color: #000000;
background: #b1dcfb;
background: #ee2200;
border-color: #ee2200;
cursor: pointer;
color: #ffffff;
outline: none;
}
.picker--time .picker__button--clear:before {
top: -0.25em;
color: #666;
font-size: 1.25em;
font-weight: bold;
}
.picker--time .picker__button--clear:hover:before,
.picker--time .picker__button--clear:focus:before {
color: #ffffff;
}
/* ==========================================================================
$CLASSIC-TIME-PICKER
========================================================================== */
/**
* Note: the root picker element should __NOT__ be styled
* more than whats here. Style the `.picker__holder` instead.
*/
.picker--time {
min-width: 256px;
max-width: 320px;
}
/**
* The holder is the base of the picker.
*/
.picker--time .picker__holder {
background: #f2f2f2;
}
@media (min-height: 40.125em) {
.picker--time .picker__holder {
font-size: .875em;
}
}
/**
* The box contains the list of times.
*/
.picker--time .picker__box {
padding: 0;
position: relative;
}

View File

@@ -0,0 +1,174 @@
/* ==========================================================================
$BASE-PICKER
========================================================================== */
/**
* Note: the root picker element should *NOT* be styled more than whats here.
*/
.picker {
font-size: 16px;
text-align: left;
line-height: 1.2;
color: #000000;
position: absolute;
z-index: 10000;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/**
* The picker input element.
*/
.picker__input {
cursor: default;
}
/**
* When the picker is opened, the input element is activated.
*/
.picker__input.picker__input--active {
border-color: #0089ec;
}
/**
* The holder is the only scrollable top-level container element.
*/
.picker__holder {
width: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/*!
* Default mobile-first, responsive styling for pickadate.js
* Demo: http://amsul.github.io/pickadate.js
*/
/**
* Note: the root picker element should *NOT* be styled more than whats here.
*/
/**
* Make the holder and frame fullscreen.
*/
.picker__holder,
.picker__frame {
bottom: 0;
left: 0;
right: 0;
top: 100%;
}
/**
* The holder should overlay the entire screen.
*/
.picker__holder {
position: fixed;
-webkit-transition: background 0.15s ease-out, top 0s 0.15s;
-moz-transition: background 0.15s ease-out, top 0s 0.15s;
transition: background 0.15s ease-out, top 0s 0.15s;
}
/**
* The frame that bounds the box contents of the picker.
*/
.picker__frame {
position: absolute;
margin: 0 auto;
min-width: 256px;
max-width: 666px;
width: 100%;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-moz-opacity: 0;
opacity: 0;
-webkit-transition: all 0.15s ease-out;
-moz-transition: all 0.15s ease-out;
transition: all 0.15s ease-out;
}
@media (min-height: 33.875em) {
.picker__frame {
overflow: visible;
top: auto;
bottom: -100%;
max-height: 80%;
}
}
@media (min-height: 40.125em) {
.picker__frame {
margin-bottom: 7.5%;
}
}
/**
* The wrapper sets the stage to vertically align the box contents.
*/
.picker__wrap {
display: table;
width: 100%;
height: 100%;
}
@media (min-height: 33.875em) {
.picker__wrap {
display: block;
}
}
/**
* The box contains all the picker contents.
*/
.picker__box {
background: #ffffff;
display: table-cell;
vertical-align: middle;
}
@media (min-height: 26.5em) {
.picker__box {
font-size: 1.25em;
}
}
@media (min-height: 33.875em) {
.picker__box {
display: block;
font-size: 1.33em;
border: 1px solid #777777;
border-top-color: #898989;
border-bottom-width: 0;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
-webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);
-moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);
box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);
}
}
@media (min-height: 40.125em) {
.picker__box {
font-size: 1.5em;
border-bottom-width: 1px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
}
/**
* When the picker opens...
*/
.picker--opened .picker__holder {
top: 0;
background: transparent;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";
zoom: 1;
background: rgba(0, 0, 0, 0.32);
-webkit-transition: background 0.15s ease-out;
-moz-transition: background 0.15s ease-out;
transition: background 0.15s ease-out;
}
.picker--opened .picker__frame {
top: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
-moz-opacity: 1;
opacity: 1;
}
@media (min-height: 33.875em) {
.picker--opened .picker__frame {
top: auto;
bottom: 0;
}
}
/**
* For `large` screens, transform into an inline picker.
*/

View File

@@ -0,0 +1,278 @@
/* ==========================================================================
$BASE-DATE-PICKER
========================================================================== */
/**
* The picker box.
*/
.picker__box {
padding: 0 1em;
}
/**
* The header containing the month and year stuff.
*/
.picker__header {
text-align: center;
position: relative;
margin-top: .75em;
}
/**
* The month and year labels.
*/
.picker__month,
.picker__year {
font-weight: 500;
display: inline-block;
margin-left: .25em;
margin-right: .25em;
}
.picker__year {
color: #999999;
font-size: .8em;
font-style: italic;
}
/**
* The month and year selectors.
*/
.picker__select--month,
.picker__select--year {
border: 1px solid #b7b7b7;
height: 2.5em;
padding: .5em .25em;
margin-left: .25em;
margin-right: .25em;
font-size: .6em;
}
@media (min-width: 24.5em) {
.picker__select--month,
.picker__select--year {
font-size: .8em;
margin-top: -0.5em;
}
}
.picker__select--month {
width: 35%;
}
.picker__select--year {
width: 22.5%;
}
.picker__select--month:focus,
.picker__select--year:focus {
border-color: #0089ec;
}
/**
* The month navigation buttons.
*/
.picker__nav--prev,
.picker__nav--next {
position: absolute;
padding: .5em 1.25em;
width: 1em;
height: 1em;
top: -0.25em;
}
@media (min-width: 24.5em) {
.picker__nav--prev,
.picker__nav--next {
top: -0.33em;
}
}
.picker__nav--prev {
left: -1em;
padding-right: 1.25em;
}
@media (min-width: 24.5em) {
.picker__nav--prev {
padding-right: 1.5em;
}
}
.picker__nav--next {
right: -1em;
padding-left: 1.25em;
}
@media (min-width: 24.5em) {
.picker__nav--next {
padding-left: 1.5em;
}
}
.picker__nav--prev:before,
.picker__nav--next:before {
content: " ";
border-top: .5em solid transparent;
border-bottom: .5em solid transparent;
border-right: 0.75em solid #000000;
width: 0;
height: 0;
display: block;
margin: 0 auto;
}
.picker__nav--next:before {
border-right: 0;
border-left: 0.75em solid #000000;
}
.picker__nav--prev:hover,
.picker__nav--next:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
}
.picker__nav--disabled,
.picker__nav--disabled:hover,
.picker__nav--disabled:before,
.picker__nav--disabled:before:hover {
cursor: default;
background: none;
border-right-color: #f5f5f5;
border-left-color: #f5f5f5;
}
/**
* The calendar table of dates
*/
.picker__table {
text-align: center;
border-collapse: collapse;
border-spacing: 0;
table-layout: fixed;
font-size: inherit;
width: 100%;
margin-top: .75em;
margin-bottom: .5em;
}
@media (min-height: 33.875em) {
.picker__table {
margin-bottom: .75em;
}
}
.picker__table td {
margin: 0;
padding: 0;
}
/**
* The weekday labels
*/
.picker__weekday {
width: 14.285714286%;
font-size: .75em;
padding-bottom: .25em;
color: #999999;
font-weight: 500;
/* Increase the spacing a tad */
}
@media (min-height: 33.875em) {
.picker__weekday {
padding-bottom: .5em;
}
}
/**
* The days on the calendar
*/
.picker__day {
padding: .3125em 0;
font-weight: 200;
border: 1px solid transparent;
}
.picker__day--today {
color: #0089ec;
position: relative;
}
.picker__day--today:before {
content: " ";
position: absolute;
top: 2px;
right: 2px;
width: 0;
height: 0;
border-top: 0.5em solid #0059bc;
border-left: .5em solid transparent;
}
.picker__day--selected,
.picker__day--selected:hover {
border-color: #0089ec;
}
.picker__day--highlighted {
background: #b1dcfb;
}
.picker__day--disabled:before {
border-top-color: #aaaaaa;
}
.picker__day--outfocus {
color: #dddddd;
}
.picker__day--infocus:hover,
.picker__day--outfocus:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
}
.picker__day--highlighted:hover,
.picker--focused .picker__day--highlighted {
background: #0089ec;
color: #ffffff;
}
.picker__day--disabled,
.picker__day--disabled:hover {
background: #f5f5f5;
border-color: #f5f5f5;
color: #dddddd;
cursor: default;
}
.picker__day--highlighted.picker__day--disabled,
.picker__day--highlighted.picker__day--disabled:hover {
background: #bbbbbb;
}
/**
* The footer containing the "today" and "clear" buttons.
*/
.picker__footer {
text-align: center;
}
.picker__button--today,
.picker__button--clear {
border: 1px solid #ffffff;
background: #ffffff;
font-size: .8em;
padding: .66em 0;
font-weight: bold;
width: 50%;
display: inline-block;
vertical-align: bottom;
}
.picker__button--today:hover,
.picker__button--clear:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
border-bottom-color: #b1dcfb;
}
.picker__button--today:focus,
.picker__button--clear:focus {
background: #b1dcfb;
border-color: #0089ec;
outline: none;
}
.picker__button--today:before,
.picker__button--clear:before {
position: relative;
display: inline-block;
height: 0;
}
.picker__button--today:before {
content: " ";
margin-right: .45em;
top: -0.05em;
width: 0;
border-top: 0.66em solid #0059bc;
border-left: .66em solid transparent;
}
.picker__button--clear:before {
content: "\D7";
margin-right: .35em;
top: -0.1em;
color: #ee2200;
vertical-align: top;
font-size: 1.1em;
}
/* ==========================================================================
$DEFAULT-DATE-PICKER
========================================================================== */

View File

@@ -0,0 +1,122 @@
/* ==========================================================================
$BASE-TIME-PICKER
========================================================================== */
/**
* The list of times.
*/
.picker__list {
list-style: none;
padding: 0.75em 0 4.2em;
margin: 0;
}
/**
* The times on the clock.
*/
.picker__list-item {
border-bottom: 1px solid #dddddd;
border-top: 1px solid #dddddd;
margin-bottom: -1px;
position: relative;
background: #ffffff;
padding: .75em 1.25em;
}
@media (min-height: 46.75em) {
.picker__list-item {
padding: .5em 1em;
}
}
/* Hovered time */
.picker__list-item:hover {
cursor: pointer;
color: #000000;
background: #b1dcfb;
border-color: #0089ec;
z-index: 10;
}
/* Selected time */
.picker__list-item--selected,
.picker__list-item--selected:hover {
border-color: #0089ec;
z-index: 10;
}
/* Highlighted time */
.picker__list-item--highlighted {
background: #b1dcfb;
}
/* Highlighted and hovered/focused time */
.picker__list-item--highlighted:hover,
.picker--focused .picker__list-item--highlighted {
background: #0089ec;
color: #ffffff;
}
/* Disabled time */
.picker__list-item--disabled,
.picker__list-item--disabled:hover,
.picker--focused .picker__list-item--disabled {
background: #f5f5f5;
border-color: #f5f5f5;
color: #dddddd;
cursor: default;
border-color: #dddddd;
z-index: auto;
}
/**
* The clear button
*/
.picker--time .picker__button--clear {
display: block;
width: 80%;
margin: 1em auto 0;
padding: 1em 1.25em;
background: none;
border: 0;
font-weight: 500;
font-size: .67em;
text-align: center;
text-transform: uppercase;
color: #666;
}
.picker--time .picker__button--clear:hover,
.picker--time .picker__button--clear:focus {
color: #000000;
background: #b1dcfb;
background: #ee2200;
border-color: #ee2200;
cursor: pointer;
color: #ffffff;
outline: none;
}
.picker--time .picker__button--clear:before {
top: -0.25em;
color: #666;
font-size: 1.25em;
font-weight: bold;
}
.picker--time .picker__button--clear:hover:before,
.picker--time .picker__button--clear:focus:before {
color: #ffffff;
}
/* ==========================================================================
$DEFAULT-TIME-PICKER
========================================================================== */
/**
* The frame the bounds the time picker.
*/
.picker--time .picker__frame {
min-width: 256px;
max-width: 320px;
}
/**
* The picker box.
*/
.picker--time .picker__box {
font-size: 1em;
background: #f2f2f2;
padding: 0;
}
@media (min-height: 40.125em) {
.picker--time .picker__box {
margin-bottom: 5em;
}
}

View File

@@ -0,0 +1,29 @@
/*!
* Styling for RTL (right-to-left) languages using pickadate.js
*/
/**
* Switch the direction - only really necessary if
* it hasnt already been applied higher up in the DOM.
*/
.picker {
direction: rtl;
}
/**
* Flip around the next and previous buttons.
*/
.picker__nav--next {
right: auto;
left: -1em;
}
.picker__nav--prev {
left: auto;
right: -1em;
}
.picker__nav--next:before {
border-left: 0;
border-right: 0.75em solid #000000;
}
.picker__nav--prev:before {
border-right: 0;
border-left: 0.75em solid #000000;
}

View File

@@ -0,0 +1,21 @@
### The following convention is used for naming the translation files:
```
LANGUAGE_COUNTRY.js
```
#### Where:
```
LANGUAGE = The lowercase ISO 639-1 language code.
```
> See http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
```
COUNTRY = The uppercase ISO 3166-1 country code.
```
> See http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
When there is no `COUNTRY` in the filename, it is assumed the generic language is used in multiple countries.

View File

@@ -0,0 +1,12 @@
// Arabic
$.extend( $.fn.pickadate.defaults, {
monthsFull: [ 'يناير', 'فبراير', 'مارس', 'ابريل', 'مايو', 'يونيو', 'يوليو', 'اغسطس', 'سبتمبر', 'اكتوبر', 'نوفمبر', 'ديسمبر' ],
monthsShort: [ 'يناير', 'فبراير', 'مارس', 'ابريل', 'مايو', 'يونيو', 'يوليو', 'اغسطس', 'سبتمبر', 'اكتوبر', 'نوفمبر', 'ديسمبر' ],
weekdaysFull: [ 'الاحد', 'الاثنين', 'الثلاثاء', 'الاربعاء', 'الخميس', 'الجمعة', 'السبت' ],
weekdaysShort: [ 'الاحد', 'الاثنين', 'الثلاثاء', 'الاربعاء', 'الخميس', 'الجمعة', 'السبت' ],
today: 'اليوم',
clear: 'مسح',
format: 'yyyy mmmm dd',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Bulgarian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'януари','февруари','март','април','май','юни','юли','август','септември','октомври','ноември','декември' ],
monthsShort: [ 'янр','фев','мар','апр','май','юни','юли','авг','сеп','окт','ное','дек' ],
weekdaysFull: [ 'неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота' ],
weekdaysShort: [ 'нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб' ],
today: 'днес',
clear: 'изтривам',
firstDay: 1,
format: 'd mmmm yyyy г.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Bosnian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', 'novembar', 'decembar' ],
monthsShort: [ 'jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec' ],
weekdaysFull: [ 'nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'cetvrtak', 'petak', 'subota' ],
weekdaysShort: [ 'ne', 'po', 'ut', 'sr', 'če', 'pe', 'su' ],
today: 'danas',
clear: 'izbrisati',
firstDay: 1,
format: 'dd. mmmm yyyy.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Catalan
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Gener', 'Febrer', 'Març', 'Abril', 'Maig', 'juny', 'Juliol', 'Agost', 'Setembre', 'Octubre', 'Novembre', 'Desembre' ],
monthsShort: [ 'Gen', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Des' ],
weekdaysFull: [ 'diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte' ],
weekdaysShort: [ 'diu', 'dil', 'dim', 'dmc', 'dij', 'div', 'dis' ],
today: 'avui',
clear: 'esborrar',
firstDay: 1,
format: 'dddd d !de mmmm !de yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Czech
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec' ],
monthsShort: [ 'led', 'úno', 'bře', 'dub', 'kvě', 'čer', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro' ],
weekdaysFull: [ 'neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota' ],
weekdaysShort: [ 'ne', 'po', 'út', 'st', 'čt', 'pá', 'so' ],
today: 'dnes',
clear: 'vymazat',
firstDay: 1,
format: 'd. mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Danish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december' ],
monthsShort: [ 'jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec' ],
weekdaysFull: [ 'søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag' ],
weekdaysShort: [ 'søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør' ],
today: 'i dag',
clear: 'slet',
firstDay: 1,
format: 'd. mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// German
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ],
monthsShort: [ 'Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ],
weekdaysFull: [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ],
weekdaysShort: [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
today: 'Heute',
clear: 'Löschen',
firstDay: 1,
format: 'dddd, dd. mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Greek
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' ],
monthsShort: [ 'Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαι', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ' ],
weekdaysFull: [ 'Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο' ],
weekdaysShort: [ 'Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ' ],
today: 'σήμερα',
clear: 'Διαγραφή',
firstDay: 1,
format: 'd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Spanish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ],
monthsShort: [ 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic' ],
weekdaysFull: [ 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado' ],
weekdaysShort: [ 'dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sab' ],
today: 'hoy',
clear: 'borrar',
firstDay: 1,
format: 'dddd d !de mmmm !de yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Estonian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember' ],
monthsShort: [ 'jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets' ],
weekdaysFull: [ 'pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev' ],
weekdaysShort: [ 'püh', 'esm', 'tei', 'kol', 'nel', 'ree', 'lau' ],
today: 'täna',
clear: 'kustutama',
firstDay: 1,
format: 'd. mmmm yyyy. a',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Basque
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', 'iraila', 'urria', 'azaroa', 'abendua' ],
monthsShort: [ 'urt', 'ots', 'mar', 'api', 'mai', 'eka', 'uzt', 'abu', 'ira', 'urr', 'aza', 'abe' ],
weekdaysFull: [ 'igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata' ],
weekdaysShort: [ 'ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.' ],
today: 'gaur',
clear: 'garbitu',
firstDay: 1,
format: 'dddd, yyyy(e)ko mmmmren da',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Finnish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu' ],
monthsShort: [ 'tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu' ],
weekdaysFull: [ 'sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai' ],
weekdaysShort: [ 'su', 'ma', 'ti', 'ke', 'to', 'pe', 'la' ],
today: 'tänään',
clear: 'tyhjennä',
firstDay: 1,
format: 'd.m.yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// French
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ],
monthsShort: [ 'Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec' ],
weekdaysFull: [ 'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi' ],
weekdaysShort: [ 'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam' ],
today: 'Aujourd\'hui',
clear: 'Effacer',
firstDay: 1,
format: 'dd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,12 @@
// Hebrew
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר' ],
monthsShort: [ 'ינו', 'פבר', 'מרץ', 'אפר', 'מאי', 'יונ', 'יול', 'אוג', 'ספט', 'אוק', 'נוב', 'דצמ' ],
weekdaysFull: [ 'יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום ששי', 'יום שבת' ],
weekdaysShort: [ 'א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש' ],
today: 'היום',
clear: 'למחוק',
format: 'yyyy mmmmב d dddd',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Croatian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'sijećanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac' ],
monthsShort: [ 'sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro' ],
weekdaysFull: [ 'nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota' ],
weekdaysShort: [ 'ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub' ],
today: 'danas',
clear: 'izbrisati',
firstDay: 1,
format: 'd. mmmm yyyy.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Hungarian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'január', 'február', 'március', 'aprilis', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december' ],
monthsShort: [ 'jan', 'febr', 'márc', 'apr', 'máj', 'jún', 'júl', 'aug', 'szept', 'okt', 'nov', 'dec' ],
weekdaysFull: [ 'vasámap', 'hétfö', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat' ],
weekdaysShort: [ 'V', 'H', 'K', 'SZ', 'CS', 'P', 'SZ' ],
today: 'ma',
clear: 'töröl',
firstDay: 1,
format: 'yyyy. mmmm dd.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Indonesian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember' ],
monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des' ],
weekdaysFull: [ 'Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu' ],
weekdaysShort: [ 'Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab' ],
today: 'hari ini',
clear: 'menghapus',
firstDay: 1,
format: 'd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Italian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre' ],
monthsShort: [ 'gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic' ],
weekdaysFull: [ 'domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato' ],
weekdaysShort: [ 'dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab' ],
today: 'oggi',
clear: 'cancellare',
firstDay: 1,
format: 'dddd d mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Japanese
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ],
monthsShort: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ],
weekdaysFull: [ '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' ],
weekdaysShort: [ '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' ],
today: '今日',
clear: '消去',
firstDay: 1,
format: 'yyyy mm dd',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Korean
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
monthsShort: [ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
weekdaysFull: [ '일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일' ],
weekdaysShort: [ '일', '월', '화', '수', '목', '금', '토' ],
today: '오늘',
clear: '취소',
firstDay: 1,
format: 'yyyy 년 mm 월 dd 일',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Dutch
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december' ],
monthsShort: [ 'jan', 'feb', 'maa', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec' ],
weekdaysFull: [ 'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag' ],
weekdaysShort: [ 'zo', 'ma', 'di', 'wo', 'do', 'vr', 'za' ],
today: 'vandaag',
clear: 'verwijderen',
firstDay: 1,
format: 'dddd d mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Norwegian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember' ],
monthsShort: [ 'jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des' ],
weekdaysFull: [ 'søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag' ],
weekdaysShort: [ 'søn','man','tir', 'ons', 'tor', 'fre', 'lør' ],
today: 'i dag',
clear: 'nullstill',
firstDay: 1,
format: 'dd. mmm. yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Polish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień' ],
monthsShort: [ 'sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru' ],
weekdaysFull: [ 'niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota' ],
weekdaysShort: [ 'N', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So' ],
today: 'dzisiaj',
clear: 'usunąć',
firstDay: 1,
format: 'd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,12 @@
// Brazilian Portuguese
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro' ],
monthsShort: [ 'jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez' ],
weekdaysFull: [ 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado' ],
weekdaysShort: [ 'dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab' ],
today: 'hoje',
clear: 'excluir',
format: 'dddd, d !de mmmm !de yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,12 @@
// Portuguese
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro' ],
monthsShort: [ 'jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez' ],
weekdaysFull: [ 'domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado' ],
weekdaysShort: [ 'dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab' ],
today: 'hoje',
clear: 'excluir',
format: 'd !de mmmm !de yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Romanian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie' ],
monthsShort: [ 'ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec' ],
weekdaysFull: [ 'duminică', 'luni', 'marţi', 'miercuri', 'joi', 'vineri', 'sâmbătă' ],
weekdaysShort: [ 'D', 'L', 'Ma', 'Mi', 'J', 'V', 'S' ],
today: 'azi',
clear: 'șterge',
firstDay: 1,
format: 'dd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Russian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' ],
monthsShort: [ 'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек' ],
weekdaysFull: [ 'воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота' ],
weekdaysShort: [ 'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб' ],
today: 'сегодня',
clear: 'удалить',
firstDay: 1,
format: 'd mmmm yyyy г.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Slovak
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december' ],
monthsShort: [ 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII' ],
weekdaysFull: [ 'nedeļľa', 'pondelok', 'utorok', 'streda', 'š̌švrtok', 'piatok', 'sobota' ],
weekdaysShort: [ 'Ne', 'Po', 'Ut', 'St', 'Št', 'Pi', 'So' ],
today: 'dnes',
clear: 'vymazať',
firstDay: 1,
format: 'd. mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Swedish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december' ],
monthsShort: [ 'jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec' ],
weekdaysFull: [ 'söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag' ],
weekdaysShort: [ 'sön', 'mån', 'tis', 'ons', 'tor', 'fre', 'lör' ],
today: 'i dag',
clear: 'bort',
firstDay: 1,
format: 'd/m yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,12 @@
// Thai
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' ],
monthsShort: [ 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.' ],
weekdaysFull: [ 'อาทติย', 'จันทร', 'องัคาร', 'พุธ', 'พฤหสั บดี', 'ศกุร', 'เสาร' ],
weekdaysShort: [ 'อ.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.' ],
today: 'วันนี้',
clear: 'ลบ',
format: 'd mmmm yyyy',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Turkish
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık' ],
monthsShort: [ 'Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara' ],
weekdaysFull: [ 'Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi' ],
weekdaysShort: [ 'Pzr', 'Pzt', 'Sal', 'Çrş', 'Prş', 'Cum', 'Cmt' ],
today: 'bugün',
clear: 'sil',
firstDay: 1,
format: 'dd mmmm yyyy dddd',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Ukrainian
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень' ],
monthsShort: [ 'січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру' ],
weekdaysFull: [ 'неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п‘ятниця', 'субота' ],
weekdaysShort: [ 'нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб' ],
today: 'сьогодні',
clear: 'викреслити',
firstDay: 1,
format: 'dd mmmm yyyy p.',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Simplified Chinese
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ],
monthsShort: [ '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二' ],
weekdaysFull: [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ],
weekdaysShort: [ '日', '一', '二', '三', '四', '五', '六' ],
today: '今日',
clear: '删',
firstDay: 1,
format: 'yyyy 年 mm 月 dd 日',
formatSubmit: 'yyyy/mm/dd'
});

View File

@@ -0,0 +1,13 @@
// Traditional Chinese
jQuery.extend( jQuery.fn.pickadate.defaults, {
monthsFull: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ],
monthsShort: [ '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二' ],
weekdaysFull: [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ],
weekdaysShort: [ '日', '一', '二', '三', '四', '五', '六' ],
today: '今天',
clear: '清除',
firstDay: 1,
format: 'yyyy 年 mm 月 dd 日',
formatSubmit: 'yyyy/mm/dd'
});