marquex
2015-06-22 182c2b620b74d8853bd9696c881f6e003b7a394c
commit | author | age
d76f7b 1 /*
182c2b 2 react-datetime v0.3.1
d76f7b 3 https://github.com/arqex/react-datetime
M 4 MIT: https://github.com/arqex/react-datetime/raw/master/LICENSE
5 */
182c2b 6 !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require(void 0),require(void 0)):"function"==typeof define&&define.amd?define([,],e):"object"==typeof exports?exports.Datetime=e(require(void 0),require(void 0)):t.Datetime=e(t.React,t.moment)}(this,function(t,e){return function(t){function e(n){if(s[n])return s[n].exports;var a=s[n]={exports:{},id:n,loaded:!1};return t[n].call(a.exports,a,a.exports,e),a.loaded=!0,a.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";var n=s(3),a=s(2),r=s(4),o=s(6),i=s(1),c=s(7),u=s(5),d=a.PropTypes,l=a.createClass({mixins:[s(8)],viewComponents:{days:r,months:o,years:i,time:c},propTypes:{date:d.object,onChange:d.func,locale:d.string,input:d.bool,dateFormat:d.string,timeFormat:d.string,inputProps:d.object,viewMode:d.oneOf(["years","months","days","time"]),minDate:d.object,maxDate:d.object},getDefaultProps:function(){return{date:new Date,viewMode:"days",inputProps:{},input:!0,onChange:function(t){console.log(t)}}},getInitialState:function(){var t=this.getFormats(this.props),e=this.props.date;return{currentView:this.props.viewMode,open:!this.props.input,inputFormat:t.datetime,viewDate:this.localMoment(e).startOf("month"),selectedDate:this.localMoment(e),inputValue:this.localMoment(e).format(t.datetime)}},getFormats:function(t){var e={date:"",time:"",datetime:""},s=this.localMoment(t.date).localeData();return t.dateFormat&&(e.date=t.dateFormat),t.timeFormat&&(e.time=t.timeFormat),e.date||e.time?(t.dateFormat&&(e.date=t.dateFormat,e.datetime=e.date),t.timeFormat&&(e.date&&(e.datetime+=" "),e.time=t.timeFormat,e.datetime+=e.time)):(e.date=s.longDateFormat("L"),e.time=s.longDateFormat("LT"),e.datetime=e.date+" "+e.time),e},componentWillReceiveProps:function(t){var e=this.getFormats(t);return e.datetime!==this.getFormats(this.props).datetime?this.setState({inputFormat:t.inputFormat}):void 0},onChange:function(t){var e=null==t.target?t:t.target.value,s=this.localMoment(date);return s.isValid()&&this.setState({selectedDate:s,viewDate:s.clone().startOf("month")}),this.setState({inputValue:e},function(){return this.props.onChange(s.toDate())})},showView:function(t){var e=this;return function(s){e.setState({currentView:t})}},setDate:function(t){var e=this,s={month:"days",year:"months"};return function(n){e.setState({viewDate:e.state.viewDate.clone()[t](n.target.innerHTML).startOf(t),currentView:s[t]})}},addTime:function(t,e,s){return this.updateTime("add",t,e,s)},subtractTime:function(t,e,s){return this.updateTime("subtract",t,e,s)},updateTime:function(t,e,s,n){var a=this;return function(){var r={},o=n?"selectedDate":"viewDate";r[o]=a.state[o].clone()[t](e,s),a.setState(r)}},allowedSetTime:["hours","minutes","seconds","milliseconds"],setTime:function(t,e){var s,n=this.allowedSetTime.indexOf(t)+1,a=this.state.selectedDate.clone();for(a[t](e);n<this.allowedSetTime.length;n++)s=this.allowedSetTime[n],a[s](a[s]());this.setState({selectedDate:a,inputValue:a.format(this.state.inputFormat)},this.callOnChange)},callOnChange:function(){this.props.onChange(this.state.selectedDate.format(this.state.inputFormat))},updateDate:function(t){var e,s=t.target,n=0,a=this.state.selectedDate;-1!=s.className.indexOf("new")?n=1:-1!=s.className.indexOf("old")&&(n=-1),e=this.state.viewDate.clone().month(this.state.viewDate.month()+n).date(parseInt(s.innerHTML)).hours(a.hours()).minutes(a.minutes()).seconds(a.seconds()).milliseconds(a.milliseconds()),this.setState({selectedDate:e,viewDate:e.clone().startOf("month"),inputValue:e.format(this.state.inputFormat)})},openCalendar:function(){this.setState({open:!0})},handleClickOutside:function(){this.props.input&&this.state.open&&this.setState({open:!1})},localMoment:function(t){var e=u(t);return this.props.locale&&e.locale(this.props.locale),e},componentProps:{fromProps:["viewMode","minDate","maxDate"],fromState:["viewDate","selectedDate"],fromThis:["setDate","setTime","showView","addTime","subtractTime","updateDate","localMoment"]},getComponentProps:function(){var t=this,e=this.getFormats(this.props),s={dateFormat:e.date,timeFormat:e.time};return this.componentProps.fromProps.forEach(function(e){s[e]=t.props[e]}),this.componentProps.fromState.forEach(function(e){s[e]=t.state[e]}),this.componentProps.fromThis.forEach(function(e){s[e]=t[e]}),s},render:function(){var t=this.viewComponents[this.state.currentView],e=a.DOM,s="rdt",r=[];return this.props.input?r=[e.input(n({key:"i",type:"text",className:"form-control",onFocus:this.openCalendar,onChange:this.onChange,value:this.state.inputValue},this.props.inputProps))]:s+=" rdtStatic",this.state.open&&(s+=" rdtOpen"),e.div({className:s},r.concat(e.div({key:"dt",className:"rdtPicker"},a.createElement(t,this.getComponentProps()))))}});t.exports=l},function(t,e,s){"use strict";var n=s(2),a=n.DOM,r=n.createClass({renderYears:function(t){var e,s=[],n=-1,r=[];for(t--;11>n;)e="year",-1===n|10===n&&(e+=" old"),this.props.selectedDate.year()===t&&(e+=" active"),s.push(a.td({key:t,className:e,onClick:this.props.setDate("year")},t)),4==s.length&&(r.push(a.tr({key:n},s)),s=[]),t++,n++;return r},render:function(){var t=10*parseInt(this.props.viewDate.year()/10,10);return a.div({className:"rdtYears"},[a.table({key:"a"},a.thead({},a.tr({},[a.th({key:"prev",className:"prev"},a.button({onClick:this.props.subtractTime(10,"years")},"‹")),a.th({key:"year",className:"switch",onClick:this.props.showView("years"),colSpan:2},t+"-"+(t+9)),a.th({key:"next",className:"next"},a.button({onClick:this.props.addTime(10,"years")},"›"))]))),a.table({key:"years"},a.tbody({},this.renderYears(t)))])}});t.exports=r},function(e,s){e.exports=t},function(t,e){"use strict";function s(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function n(t){var e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(t))),e.filter(function(e){return a.call(t,e)})}var a=Object.prototype.propertyIsEnumerable;t.exports=Object.assign||function(t,e){for(var a,r,o=s(t),i=1;i<arguments.length;i++){a=arguments[i],r=n(Object(a));for(var c=0;c<r.length;c++)o[r[c]]=a[r[c]]}return o}},function(t,e,s){var n=s(2),a=s(5),r=n.DOM,o=n.createClass({render:function(){var t,e=this.renderFooter(),s=this.props.viewDate,n=s.localeData();return t=[r.thead({key:"th"},[r.tr({key:"h"},[r.th({key:"p",className:"prev"},r.button({onClick:this.props.subtractTime(1,"months")},"‹")),r.th({key:"s",className:"switch",onClick:this.props.showView("months"),colSpan:5},n.months(s)+" "+s.year()),r.th({key:"n",className:"next"},r.button({onClick:this.props.addTime(1,"months")},"›"))]),r.tr({key:"d"},this.getDaysOfWeek(n).map(function(t){return r.th({key:t,className:"dow"},t)}))]),r.tbody({key:"tb"},this.renderDays())],e&&t.push(e),r.div({className:"rdtDays"},r.table({},t))},getDaysOfWeek:function(t){var e=t._weekdaysMin,s=t.firstDayOfWeek(),n=[],a=0;return e.forEach(function(t){n[(7+a++-s)%7]=t}),n},renderDays:function(){var t,e,s,n=this.props.viewDate,o=this.props.selectedDate,i=n.clone().subtract(1,"months"),c=n.year(),u=n.month(),d={y:o.year(),M:o.month(),d:o.date()},l=this.props.minDate,p=this.props.maxDate,h=[],m=[];i.date(i.daysInMonth()).startOf("week");for(var f=i.clone().add(42,"d");i.isBefore(f);)t="day",i.year()<c||i.month()<u?t+=" old":(i.year()>c||i.month()>u)&&(t+=" new"),i.isSame(d)&&(t+=" active"),i.isSame(a(),"day")&&(t+=" today"),e=l&&i.isBefore(l)||p&&i.isAfter(p),e&&(t+=" disabled"),s={key:i.format("M_D"),className:t},e||(s.onClick=this.props.updateDate),m.push(r.td(s,i.date())),7==m.length&&(h.push(r.tr({key:i.format("M_D")},m)),m=[]),i.add(1,"d");return h},renderFooter:function(){return this.props.timeFormat?r.tfoot({key:"tf"},r.tr({},r.td({onClick:this.props.showView("time"),colSpan:7,className:"timeToggle"},this.props.selectedDate.format(this.props.timeFormat)))):""}});t.exports=o},function(t,s){t.exports=e},function(t,e,s){"use strict";var n=s(2),a=(s(5),n.DOM),r=n.createClass({renderMonths:function(){for(var t,e=this.props.selectedDate,s=e.month(),n=e.localeData()._monthsShort,r=[],o=0,i=[];12>o;)t="month",o===s&&this.props.viewDate.year()===e.year()&&(t+=" active"),i.push(a.td({key:o,className:t,onClick:this.props.setDate("month")},n[o])),4==i.length&&(r.push(a.tr({key:s+"_"+r.length},i)),i=[]),o++;return r},render:function(){return a.div({className:"rdtMonths"},[a.table({key:"a"},a.thead({},a.tr({},[a.th({key:"prev",className:"prev"},a.button({onClick:this.props.subtractTime(1,"years")},"‹")),a.th({key:"year",className:"switch",onClick:this.props.showView("years"),colSpan:2},this.props.viewDate.year()),a.th({key:"next",className:"next"},a.button({onClick:this.props.addTime(1,"years")},"›"))]))),a.table({key:"months"},a.tbody({key:"b"},this.renderMonths()))])}});t.exports=r},function(t,e,s){"use strict";var n=s(2),a=n.DOM,r=n.createClass({getInitialState:function(){var t=this.props.selectedDate,e=this.props.timeFormat,s=[];return(-1!=e.indexOf("H")||-1!=e.indexOf("h"))&&(s.push("hours"),-1!=e.indexOf("m")&&(s.push("minutes"),-1!=e.indexOf("s")&&s.push("seconds"))),{hours:t.format("H"),minutes:t.format("mm"),seconds:t.format("ss"),milliseconds:t.format("SSS"),counters:s}},renderCounter:function(t){return a.div({key:t,className:"rdtCounter"},[a.button({key:"up",className:"btn",onMouseDown:this.onStartClicking("increase",t)},"▲"),a.div({key:"c",className:"rdtCount"},this.state[t]),a.button({key:"do",className:"btn",onMouseDown:this.onStartClicking("decrease",t)},"▼")])},render:function(){var t=this,e=[];return this.state.counters.forEach(function(s){e.length&&e.push(a.div({key:"sep"+e.length,className:"rdtCounterSeparator"},":")),e.push(t.renderCounter(s))}),3==this.state.counters.length&&-1!=this.props.timeFormat.indexOf("S")&&(e.push(a.div({className:"rdtCounterSeparator",key:"sep5"},":")),e.push(a.div({className:"rdtCounter rdtMilli",key:"m"},a.input({value:this.state.milliseconds,type:"text",onChange:this.updateMilli})))),a.div({className:"rdtTime"},a.table({},[this.renderHeader(),a.tbody({key:"b"},a.tr({},a.td({},a.div({className:"rdtCounters"},e))))]))},updateMilli:function(t){var e=parseInt(t.target.value);e==t.target.value&&e>=0&&1e3>e&&(this.props.setTime("milliseconds",e),this.setState({milliseconds:e}))},renderHeader:function(){return this.props.dateFormat?a.thead({key:"h"},a.tr({},a.th({colSpan:4,onClick:this.props.showView("days")},this.props.selectedDate.format(this.props.dateFormat)))):""},onStartClicking:function(t,e){var s=this;return function(){var n={};n[e]=s[t](e),s.setState(n),s.timer=setTimeout(function(){s.increaseTimer=setInterval(function(){n[e]=s[t](e),s.setState(n)},80)},500),document.body.addEventListener("mouseup",function(){clearTimeout(s.timer),clearInterval(s.increaseTimer),s.props.setTime(e,s.state[e])})}},maxValues:{hours:23,minutes:59,seconds:59,milliseconds:999},padValues:{hours:1,minutes:2,seconds:2,milliseconds:3},increase:function(t){var e=parseInt(this.state[t])+1;return e>this.maxValues[t]&&(e=0),this.pad(t,e)},decrease:function(t){var e=parseInt(this.state[t])-1;return 0>e&&(e=this.maxValues[t]),this.pad(t,e)},pad:function(t,e){for(var s=e+"";s.length<this.padValues[t];)s="0"+s;return s}});t.exports=r},function(t,e,s){var n,a,r;!function(s,o){a=[],n=o,r="function"==typeof n?n.apply(e,a):n,!(void 0!==r&&(t.exports=r))}(this,function(){"use strict";var t=[],e=[],s="ignore-react-onclickoutside";return{componentDidMount:function(){if(!this.handleClickOutside)throw new Error("Component lacks a handleClickOutside(event) function for processing outside click events.");var n=this.__outsideClickHandler=function(t,e){return function(n){for(var a=n.target,r=!1;a.parentNode;){if(r=a===t||a.classList.contains(s))return;a=a.parentNode}e(n)}}(this.getDOMNode(),this.handleClickOutside),a=t.length;t.push(this),e[a]=n,this.props.disableOnClickOutside||this.enableOnClickOutside()},componentWillUnmount:function(){this.disableOnClickOutside(),this.__outsideClickHandler=!1;var s=t.indexOf(this);s>-1&&e[s]&&(e.splice(s,1),t.splice(s,1))},enableOnClickOutside:function(){var t=this.__outsideClickHandler;document.addEventListener("mousedown",t),document.addEventListener("touchstart",t)},disableOnClickOutside:function(t){var t=this.__outsideClickHandler;document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t)}}})}])});