react-datetime
Advanced tools
Comparing version 2.3.3 to 2.4.0
Changelog | ||
========= | ||
## 2.4.0 | ||
* Added ES linting. | ||
* Added `closeOnTab` property. | ||
## 2.3.3 | ||
@@ -4,0 +8,0 @@ * Updated readme. |
104
DateTime.js
@@ -26,3 +26,2 @@ 'use strict'; | ||
// defaultValue: TYPES.object | TYPES.string, | ||
closeOnSelect: TYPES.bool, | ||
onFocus: TYPES.func, | ||
@@ -39,3 +38,5 @@ onBlur: TYPES.func, | ||
open: TYPES.bool, | ||
strictParsing: TYPES.bool | ||
strictParsing: TYPES.bool, | ||
closeOnSelect: TYPES.bool, | ||
closeOnTab: TYPES.bool | ||
}, | ||
@@ -55,3 +56,5 @@ | ||
dateFormat: true, | ||
strictParsing: true | ||
strictParsing: true, | ||
closeOnSelect: false, | ||
closeOnTab: true | ||
}; | ||
@@ -63,3 +66,3 @@ }, | ||
if( state.open == undefined ) | ||
if ( state.open === undefined ) | ||
state.open = !this.props.input; | ||
@@ -78,13 +81,13 @@ | ||
if( date && typeof date == 'string' ) | ||
if ( date && typeof date === 'string' ) | ||
selectedDate = this.localMoment( date, formats.datetime ); | ||
else if( date ) | ||
else if ( date ) | ||
selectedDate = this.localMoment( date ); | ||
if( selectedDate && !selectedDate.isValid() ) | ||
if ( selectedDate && !selectedDate.isValid() ) | ||
selectedDate = null; | ||
viewDate = selectedDate ? | ||
selectedDate.clone().startOf("month") : | ||
this.localMoment().startOf("month") | ||
selectedDate.clone().startOf('month') : | ||
this.localMoment().startOf('month') | ||
; | ||
@@ -105,10 +108,10 @@ | ||
getUpdateOn: function(formats){ | ||
if( formats.date.match(/[lLD]/) ){ | ||
return "days"; | ||
if ( formats.date.match(/[lLD]/) ){ | ||
return 'days'; | ||
} | ||
else if( formats.date.indexOf("M") != -1 ){ | ||
return "months"; | ||
else if ( formats.date.indexOf('M') !== -1 ){ | ||
return 'months'; | ||
} | ||
else if( formats.date.indexOf("Y") != -1 ){ | ||
return "years"; | ||
else if ( formats.date.indexOf('Y') !== -1 ){ | ||
return 'years'; | ||
} | ||
@@ -127,10 +130,10 @@ | ||
if( formats.date === true ){ | ||
if ( formats.date === true ){ | ||
formats.date = locale.longDateFormat('L'); | ||
} | ||
else if( this.getUpdateOn(formats) !== 'days' ){ | ||
else if ( this.getUpdateOn(formats) !== 'days' ){ | ||
formats.time = ''; | ||
} | ||
if( formats.time === true ){ | ||
if ( formats.time === true ){ | ||
formats.time = locale.longDateFormat('LT'); | ||
@@ -152,3 +155,3 @@ } | ||
if( nextProps.value != this.props.value ){ | ||
if ( nextProps.value !== this.props.value ){ | ||
update = this.getStateFromProps( nextProps ); | ||
@@ -160,7 +163,7 @@ } | ||
if( update.open === undefined ){ | ||
if( this.props.closeOnSelect && this.state.currentView !== 'time' ){ | ||
if ( update.open === undefined ){ | ||
if ( this.props.closeOnSelect && this.state.currentView !== 'time' ){ | ||
update.open = false; | ||
} | ||
else{ | ||
else { | ||
update.open = this.state.open; | ||
@@ -170,3 +173,2 @@ } | ||
this.setState( update ); | ||
@@ -176,3 +178,3 @@ }, | ||
onInputChange: function( e ) { | ||
var value = e.target == null ? e : e.target.value, | ||
var value = e.target === null ? e : e.target.value, | ||
localMoment = this.localMoment( value, this.state.inputFormat ), | ||
@@ -184,3 +186,3 @@ update = { inputValue: value } | ||
update.selectedDate = localMoment; | ||
update.viewDate = localMoment.clone().startOf("month"); | ||
update.viewDate = localMoment.clone().startOf('month'); | ||
} | ||
@@ -196,5 +198,11 @@ else { | ||
onInputKey: function( e ){ | ||
if( e.which === 9 && this.props.closeOnTab ){ | ||
this.closeCalendar(); | ||
} | ||
}, | ||
showView: function( view ){ | ||
var me = this; | ||
return function( e ){ | ||
return function(){ | ||
me.setState({ currentView: view }); | ||
@@ -213,3 +221,3 @@ }; | ||
me.setState({ | ||
viewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value')) ).startOf( type ), | ||
viewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value'), 10) ).startOf( type ), | ||
currentView: nextViews[ type ] | ||
@@ -242,3 +250,3 @@ }); | ||
allowedSetTime: ['hours','minutes','seconds', 'milliseconds'], | ||
allowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'], | ||
setTime: function( type, value ){ | ||
@@ -259,3 +267,3 @@ var index = this.allowedSetTime.indexOf( type ) + 1, | ||
if( !this.props.value ){ | ||
if ( !this.props.value ){ | ||
this.setState({ | ||
@@ -277,6 +285,6 @@ selectedDate: date, | ||
if(target.className.indexOf("rdtDay") != -1){ | ||
if(target.className.indexOf("rdtNew") != -1) | ||
if (target.className.indexOf('rdtDay') !== -1){ | ||
if (target.className.indexOf('rdtNew') !== -1) | ||
modifier = 1; | ||
else if(target.className.indexOf("rdtOld") != -1) | ||
else if (target.className.indexOf('rdtOld') !== -1) | ||
modifier = -1; | ||
@@ -286,13 +294,12 @@ | ||
.month( viewDate.month() + modifier ) | ||
.date( parseInt( target.getAttribute('data-value') ) ) | ||
; | ||
}else if(target.className.indexOf("rdtMonth") != -1){ | ||
.date( parseInt( target.getAttribute('data-value'), 10 ) ); | ||
} else if (target.className.indexOf('rdtMonth') !== -1){ | ||
date = viewDate.clone() | ||
.month( parseInt( target.getAttribute('data-value') ) ) | ||
.date( currentDate.date() ) | ||
}else if(target.className.indexOf("rdtYear") != -1){ | ||
.month( parseInt( target.getAttribute('data-value'), 10 ) ) | ||
.date( currentDate.date() ); | ||
} else if (target.className.indexOf('rdtYear') !== -1){ | ||
date = viewDate.clone() | ||
.month( currentDate.month() ) | ||
.date( currentDate.date() ) | ||
.year( parseInt( target.getAttribute('data-value') ) ) | ||
.year( parseInt( target.getAttribute('data-value'), 10 ) ); | ||
} | ||
@@ -303,5 +310,5 @@ | ||
.seconds( currentDate.seconds() ) | ||
.milliseconds( currentDate.milliseconds() ) | ||
.milliseconds( currentDate.milliseconds() ); | ||
if( !this.props.value ){ | ||
if ( !this.props.value ){ | ||
this.setState({ | ||
@@ -313,4 +320,3 @@ selectedDate: date, | ||
}); | ||
} | ||
else { | ||
} else { | ||
if (this.props.closeOnSelect && close) { | ||
@@ -337,3 +343,3 @@ this.closeCalendar(); | ||
handleClickOutside: function(){ | ||
if( this.props.input && this.state.open && !this.props.open ){ | ||
if ( this.props.input && this.state.open && !this.props.open ){ | ||
this.setState({ open: false }); | ||
@@ -346,3 +352,3 @@ this.props.onBlur( this.state.selectedDate || this.state.inputValue ); | ||
var m = moment( date, format, this.props.strictParsing ); | ||
if( this.props.locale ) | ||
if ( this.props.locale ) | ||
m.locale( this.props.locale ); | ||
@@ -384,3 +390,3 @@ return m; | ||
if( this.props.input ){ | ||
if ( this.props.input ){ | ||
children = [ DOM.input( assign({ | ||
@@ -392,10 +398,10 @@ key: 'i', | ||
onChange: this.onInputChange, | ||
onKeyDown: this.onInputKey, | ||
value: this.state.inputValue | ||
}, this.props.inputProps ))]; | ||
} | ||
else { | ||
} else { | ||
className += ' rdtStatic'; | ||
} | ||
if( this.state.open ) | ||
if ( this.state.open ) | ||
className += ' rdtOpen'; | ||
@@ -402,0 +408,0 @@ |
/* | ||
react-datetime v2.3.3 | ||
react-datetime v2.4.0 | ||
https://github.com/arqex/react-datetime | ||
@@ -62,3 +62,3 @@ MIT: https://github.com/arqex/react-datetime/raw/master/LICENSE | ||
eval("'use strict';\n\nvar assign = __webpack_require__(1),\n\tReact = __webpack_require__(2),\n\tDaysView = __webpack_require__(3),\n\tMonthsView = __webpack_require__(5),\n\tYearsView = __webpack_require__(6),\n\tTimeView = __webpack_require__(7),\n\tmoment = __webpack_require__(4)\n;\n\nvar TYPES = React.PropTypes;\nvar Datetime = React.createClass({\n\tmixins: [\n\t\t__webpack_require__(8)\n\t],\n\tviewComponents: {\n\t\tdays: DaysView,\n\t\tmonths: MonthsView,\n\t\tyears: YearsView,\n\t\ttime: TimeView\n\t},\n\tpropTypes: {\n\t\t// value: TYPES.object | TYPES.string,\n\t\t// defaultValue: TYPES.object | TYPES.string,\n\t\tcloseOnSelect: TYPES.bool,\n\t\tonFocus: TYPES.func,\n\t\tonBlur: TYPES.func,\n\t\tonChange: TYPES.func,\n\t\tlocale: TYPES.string,\n\t\tinput: TYPES.bool,\n\t\t// dateFormat: TYPES.string | TYPES.bool,\n\t\t// timeFormat: TYPES.string | TYPES.bool,\n\t\tinputProps: TYPES.object,\n\t\tviewMode: TYPES.oneOf(['years', 'months', 'days', 'time']),\n\t\tisValidDate: TYPES.func,\n\t\topen: TYPES.bool,\n\t\tstrictParsing: TYPES.bool\n\t},\n\n\tgetDefaultProps: function() {\n\t\tvar nof = function(){};\n\t\treturn {\n\t\t\tclassName: '',\n\t\t\tdefaultValue: '',\n\t\t\tinputProps: {},\n\t\t\tinput: true,\n\t\t\tonFocus: nof,\n\t\t\tonBlur: nof,\n\t\t\tonChange: nof,\n\t\t\ttimeFormat: true,\n\t\t\tdateFormat: true,\n\t\t\tstrictParsing: true\n\t\t};\n\t},\n\n\tgetInitialState: function() {\n\t\tvar state = this.getStateFromProps( this.props );\n\n\t\tif( state.open == undefined )\n\t\t\tstate.open = !this.props.input;\n\n\t\tstate.currentView = this.props.dateFormat ? (this.props.viewMode || state.updateOn || 'days') : 'time';\n\n\t\treturn state;\n\t},\n\n\tgetStateFromProps: function( props ){\n\t\tvar formats = this.getFormats( props ),\n\t\t\tdate = props.value || props.defaultValue,\n\t\t\tselectedDate, viewDate, updateOn\n\t\t;\n\n\t\tif( date && typeof date == 'string' )\n\t\t\tselectedDate = this.localMoment( date, formats.datetime );\n\t\telse if( date )\n\t\t\tselectedDate = this.localMoment( date );\n\n\t\tif( selectedDate && !selectedDate.isValid() )\n\t\t\tselectedDate = null;\n\n\t\tviewDate = selectedDate ?\n\t\t\tselectedDate.clone().startOf(\"month\") :\n\t\t\tthis.localMoment().startOf(\"month\")\n\t\t;\n\n\t\tupdateOn = this.getUpdateOn(formats);\n\n\t\treturn {\n\t\t\tupdateOn: updateOn,\n\t\t\tinputFormat: formats.datetime,\n\t\t\tviewDate: viewDate,\n\t\t\tselectedDate: selectedDate,\n\t\t\tinputValue: selectedDate ? selectedDate.format( formats.datetime ) : (date || ''),\n\t\t\topen: props.open\n\t\t};\n\t},\n\n\tgetUpdateOn: function(formats){\n\t\tif( formats.date.match(/[lLD]/) ){\n\t\t\treturn \"days\";\n\t\t}\n\t\telse if( formats.date.indexOf(\"M\") != -1 ){\n\t\t\treturn \"months\";\n\t\t}\n\t\telse if( formats.date.indexOf(\"Y\") != -1 ){\n\t\t\treturn \"years\";\n\t\t}\n\n\t\treturn 'days';\n\t},\n\n\tgetFormats: function( props ){\n\t\tvar formats = {\n\t\t\t\tdate: props.dateFormat || '',\n\t\t\t\ttime: props.timeFormat || ''\n\t\t\t},\n\t\t\tlocale = this.localMoment( props.date ).localeData()\n\t\t;\n\n\t\tif( formats.date === true ){\n\t\t\tformats.date = locale.longDateFormat('L');\n\t\t}\n\t\telse if( this.getUpdateOn(formats) !== 'days' ){\n\t\t\tformats.time = '';\n\t\t}\n\n\t\tif( formats.time === true ){\n\t\t\tformats.time = locale.longDateFormat('LT');\n\t\t}\n\n\t\tformats.datetime = formats.date && formats.time ?\n\t\t\tformats.date + ' ' + formats.time :\n\t\t\tformats.date || formats.time\n\t\t;\n\n\t\treturn formats;\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\tvar formats = this.getFormats( nextProps ),\n\t\t\tupdate = {}\n\t\t;\n\n\t\tif( nextProps.value != this.props.value ){\n\t\t\tupdate = this.getStateFromProps( nextProps );\n\t\t}\n\t\tif ( formats.datetime !== this.getFormats( this.props ).datetime ) {\n\t\t\tupdate.inputFormat = formats.datetime;\n\t\t}\n\n\t\tif( update.open === undefined ){\n\t\t\tif( this.props.closeOnSelect && this.state.currentView !== 'time' ){\n\t\t\t\tupdate.open = false;\n\t\t\t}\n\t\t\telse{\n\t\t\t\tupdate.open = this.state.open;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.setState( update );\n\t},\n\n\tonInputChange: function( e ) {\n\t\tvar value = e.target == null ? e : e.target.value,\n\t\t\tlocalMoment = this.localMoment( value, this.state.inputFormat ),\n\t\t\tupdate = { inputValue: value }\n\t\t;\n\n\t\tif ( localMoment.isValid() && !this.props.value ) {\n\t\t\tupdate.selectedDate = localMoment;\n\t\t\tupdate.viewDate = localMoment.clone().startOf(\"month\");\n\t\t}\n\t\telse {\n\t\t\tupdate.selectedDate = null;\n\t\t}\n\n\t\treturn this.setState( update, function() {\n\t\t\treturn this.props.onChange( localMoment.isValid() ? localMoment : this.state.inputValue );\n\t\t});\n\t},\n\n\tshowView: function( view ){\n\t\tvar me = this;\n\t\treturn function( e ){\n\t\t\tme.setState({ currentView: view });\n\t\t};\n\t},\n\n\tsetDate: function( type ){\n\t\tvar me = this,\n\t\t\tnextViews = {\n\t\t\t\tmonth: 'days',\n\t\t\t\tyear: 'months'\n\t\t\t}\n\t\t;\n\t\treturn function( e ){\n\t\t\tme.setState({\n\t\t\t\tviewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value')) ).startOf( type ),\n\t\t\t\tcurrentView: nextViews[ type ]\n\t\t\t});\n\t\t};\n\t},\n\n\taddTime: function( amount, type, toSelected ){\n\t\treturn this.updateTime( 'add', amount, type, toSelected );\n\t},\n\n\tsubtractTime: function( amount, type, toSelected ){\n\t\treturn this.updateTime( 'subtract', amount, type, toSelected );\n\t},\n\n\tupdateTime: function( op, amount, type, toSelected ){\n\t\tvar me = this;\n\n\t\treturn function(){\n\t\t\tvar update = {},\n\t\t\t\tdate = toSelected ? 'selectedDate' : 'viewDate'\n\t\t\t;\n\n\t\t\tupdate[ date ] = me.state[ date ].clone()[ op ]( amount, type );\n\n\t\t\tme.setState( update );\n\t\t};\n\t},\n\n\tallowedSetTime: ['hours','minutes','seconds', 'milliseconds'],\n\tsetTime: function( type, value ){\n\t\tvar index = this.allowedSetTime.indexOf( type ) + 1,\n\t\t\tstate = this.state,\n\t\t\tdate = (state.selectedDate || state.viewDate).clone(),\n\t\t\tnextType\n\t\t;\n\n\t\t// It is needed to set all the time properties\n\t\t// to not to reset the time\n\t\tdate[ type ]( value );\n\t\tfor (; index < this.allowedSetTime.length; index++) {\n\t\t\tnextType = this.allowedSetTime[index];\n\t\t\tdate[ nextType ]( date[nextType]() );\n\t\t}\n\n\t\tif( !this.props.value ){\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tinputValue: date.format( state.inputFormat )\n\t\t\t});\n\t\t}\n\t\tthis.props.onChange( date );\n\t},\n\n\tupdateSelectedDate: function( e, close ) {\n\t\tvar target = e.target,\n\t\t\tmodifier = 0,\n\t\t\tviewDate = this.state.viewDate,\n\t\t\tcurrentDate = this.state.selectedDate || viewDate,\n\t\t\tdate\n ;\n\n\t\tif(target.className.indexOf(\"rdtDay\") != -1){\n\t\t\tif(target.className.indexOf(\"rdtNew\") != -1)\n\t\t\t\tmodifier = 1;\n\t\t\telse if(target.className.indexOf(\"rdtOld\") != -1)\n\t\t\t\tmodifier = -1;\n\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( viewDate.month() + modifier )\n\t\t\t\t.date( parseInt( target.getAttribute('data-value') ) )\n\t\t\t;\n\t\t}else if(target.className.indexOf(\"rdtMonth\") != -1){\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( parseInt( target.getAttribute('data-value') ) )\n\t\t\t\t.date( currentDate.date() )\n\t\t}else if(target.className.indexOf(\"rdtYear\") != -1){\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( currentDate.month() )\n\t\t\t\t.date( currentDate.date() )\n\t\t\t\t.year( parseInt( target.getAttribute('data-value') ) )\n\t\t}\n\n\t\tdate.hours( currentDate.hours() )\n\t\t\t.minutes( currentDate.minutes() )\n\t\t\t.seconds( currentDate.seconds() )\n\t\t\t.milliseconds( currentDate.milliseconds() )\n\n\t\tif( !this.props.value ){\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tviewDate: date.clone().startOf('month'),\n\t\t\t\tinputValue: date.format( this.state.inputFormat ),\n\t\t\t\topen: !(this.props.closeOnSelect && close )\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tif (this.props.closeOnSelect && close) {\n\t\t\t\tthis.closeCalendar();\n\t\t\t}\n\t\t}\n\n\t\tthis.props.onChange( date );\n\t},\n\n\topenCalendar: function() {\n\t\tif (!this.state.open) {\n\t\t\tthis.props.onFocus();\n\t\t\tthis.setState({ open: true });\n\t\t}\n\t},\n\n\tcloseCalendar: function() {\n\t\tthis.setState({ open: false });\n\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t},\n\n\thandleClickOutside: function(){\n\t\tif( this.props.input && this.state.open && !this.props.open ){\n\t\t\tthis.setState({ open: false });\n\t\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t\t}\n\t},\n\n\tlocalMoment: function( date, format ){\n\t\tvar m = moment( date, format, this.props.strictParsing );\n\t\tif( this.props.locale )\n\t\t\tm.locale( this.props.locale );\n\t\treturn m;\n\t},\n\n\tcomponentProps: {\n\t\tfromProps: ['value', 'isValidDate', 'renderDay', 'renderMonth', 'renderYear'],\n\t\tfromState: ['viewDate', 'selectedDate', 'updateOn'],\n\t\tfromThis: ['setDate', 'setTime', 'showView', 'addTime', 'subtractTime', 'updateSelectedDate', 'localMoment']\n\t},\n\n\tgetComponentProps: function(){\n\t\tvar me = this,\n\t\t\tformats = this.getFormats( this.props ),\n\t\t\tprops = {dateFormat: formats.date, timeFormat: formats.time}\n\t\t;\n\n\t\tthis.componentProps.fromProps.forEach( function( name ){\n\t\t\tprops[ name ] = me.props[ name ];\n\t\t});\n\t\tthis.componentProps.fromState.forEach( function( name ){\n\t\t\tprops[ name ] = me.state[ name ];\n\t\t});\n\t\tthis.componentProps.fromThis.forEach( function( name ){\n\t\t\tprops[ name ] = me[ name ];\n\t\t});\n\n\t\treturn props;\n\t},\n\n\trender: function() {\n\t\tvar Component = this.viewComponents[ this.state.currentView ],\n\t\t\tDOM = React.DOM,\n\t\t\tclassName = 'rdt ' + this.props.className,\n\t\t\tchildren = []\n\t\t;\n\n\t\tif( this.props.input ){\n\t\t\tchildren = [ DOM.input( assign({\n\t\t\t\tkey: 'i',\n\t\t\t\ttype:'text',\n\t\t\t\tclassName: 'form-control',\n\t\t\t\tonFocus: this.openCalendar,\n\t\t\t\tonChange: this.onInputChange,\n\t\t\t\tvalue: this.state.inputValue\n\t\t\t}, this.props.inputProps ))];\n\t\t}\n\t\telse {\n\t\t\tclassName += ' rdtStatic';\n\t\t}\n\n\t\tif( this.state.open )\n\t\t\tclassName += ' rdtOpen';\n\n\t\treturn DOM.div({className: className}, children.concat(\n\t\t\tDOM.div(\n\t\t\t\t{ key: 'dt', className: 'rdtPicker' },\n\t\t\t\tReact.createElement( Component, this.getComponentProps())\n\t\t\t)\n\t\t));\n\t}\n});\n\n// Make moment accessible through the Datetime class\nDatetime.moment = moment;\n\nmodule.exports = Datetime;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./Datetime.js\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./Datetime.js?"); | ||
eval("'use strict';\n\nvar assign = __webpack_require__(1),\n\tReact = __webpack_require__(2),\n\tDaysView = __webpack_require__(3),\n\tMonthsView = __webpack_require__(5),\n\tYearsView = __webpack_require__(6),\n\tTimeView = __webpack_require__(7),\n\tmoment = __webpack_require__(4)\n;\n\nvar TYPES = React.PropTypes;\nvar Datetime = React.createClass({\n\tmixins: [\n\t\t__webpack_require__(8)\n\t],\n\tviewComponents: {\n\t\tdays: DaysView,\n\t\tmonths: MonthsView,\n\t\tyears: YearsView,\n\t\ttime: TimeView\n\t},\n\tpropTypes: {\n\t\t// value: TYPES.object | TYPES.string,\n\t\t// defaultValue: TYPES.object | TYPES.string,\n\t\tonFocus: TYPES.func,\n\t\tonBlur: TYPES.func,\n\t\tonChange: TYPES.func,\n\t\tlocale: TYPES.string,\n\t\tinput: TYPES.bool,\n\t\t// dateFormat: TYPES.string | TYPES.bool,\n\t\t// timeFormat: TYPES.string | TYPES.bool,\n\t\tinputProps: TYPES.object,\n\t\tviewMode: TYPES.oneOf(['years', 'months', 'days', 'time']),\n\t\tisValidDate: TYPES.func,\n\t\topen: TYPES.bool,\n\t\tstrictParsing: TYPES.bool,\n\t\tcloseOnSelect: TYPES.bool,\n\t\tcloseOnTab: TYPES.bool\n\t},\n\n\tgetDefaultProps: function() {\n\t\tvar nof = function(){};\n\t\treturn {\n\t\t\tclassName: '',\n\t\t\tdefaultValue: '',\n\t\t\tinputProps: {},\n\t\t\tinput: true,\n\t\t\tonFocus: nof,\n\t\t\tonBlur: nof,\n\t\t\tonChange: nof,\n\t\t\ttimeFormat: true,\n\t\t\tdateFormat: true,\n\t\t\tstrictParsing: true,\n\t\t\tcloseOnSelect: false,\n\t\t\tcloseOnTab: true\n\t\t};\n\t},\n\n\tgetInitialState: function() {\n\t\tvar state = this.getStateFromProps( this.props );\n\n\t\tif ( state.open === undefined )\n\t\t\tstate.open = !this.props.input;\n\n\t\tstate.currentView = this.props.dateFormat ? (this.props.viewMode || state.updateOn || 'days') : 'time';\n\n\t\treturn state;\n\t},\n\n\tgetStateFromProps: function( props ){\n\t\tvar formats = this.getFormats( props ),\n\t\t\tdate = props.value || props.defaultValue,\n\t\t\tselectedDate, viewDate, updateOn\n\t\t;\n\n\t\tif ( date && typeof date === 'string' )\n\t\t\tselectedDate = this.localMoment( date, formats.datetime );\n\t\telse if ( date )\n\t\t\tselectedDate = this.localMoment( date );\n\n\t\tif ( selectedDate && !selectedDate.isValid() )\n\t\t\tselectedDate = null;\n\n\t\tviewDate = selectedDate ?\n\t\t\tselectedDate.clone().startOf('month') :\n\t\t\tthis.localMoment().startOf('month')\n\t\t;\n\n\t\tupdateOn = this.getUpdateOn(formats);\n\n\t\treturn {\n\t\t\tupdateOn: updateOn,\n\t\t\tinputFormat: formats.datetime,\n\t\t\tviewDate: viewDate,\n\t\t\tselectedDate: selectedDate,\n\t\t\tinputValue: selectedDate ? selectedDate.format( formats.datetime ) : (date || ''),\n\t\t\topen: props.open\n\t\t};\n\t},\n\n\tgetUpdateOn: function(formats){\n\t\tif ( formats.date.match(/[lLD]/) ){\n\t\t\treturn 'days';\n\t\t}\n\t\telse if ( formats.date.indexOf('M') !== -1 ){\n\t\t\treturn 'months';\n\t\t}\n\t\telse if ( formats.date.indexOf('Y') !== -1 ){\n\t\t\treturn 'years';\n\t\t}\n\n\t\treturn 'days';\n\t},\n\n\tgetFormats: function( props ){\n\t\tvar formats = {\n\t\t\t\tdate: props.dateFormat || '',\n\t\t\t\ttime: props.timeFormat || ''\n\t\t\t},\n\t\t\tlocale = this.localMoment( props.date ).localeData()\n\t\t;\n\n\t\tif ( formats.date === true ){\n\t\t\tformats.date = locale.longDateFormat('L');\n\t\t}\n\t\telse if ( this.getUpdateOn(formats) !== 'days' ){\n\t\t\tformats.time = '';\n\t\t}\n\n\t\tif ( formats.time === true ){\n\t\t\tformats.time = locale.longDateFormat('LT');\n\t\t}\n\n\t\tformats.datetime = formats.date && formats.time ?\n\t\t\tformats.date + ' ' + formats.time :\n\t\t\tformats.date || formats.time\n\t\t;\n\n\t\treturn formats;\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\tvar formats = this.getFormats( nextProps ),\n\t\t\tupdate = {}\n\t\t;\n\n\t\tif ( nextProps.value !== this.props.value ){\n\t\t\tupdate = this.getStateFromProps( nextProps );\n\t\t}\n\t\tif ( formats.datetime !== this.getFormats( this.props ).datetime ) {\n\t\t\tupdate.inputFormat = formats.datetime;\n\t\t}\n\n\t\tif ( update.open === undefined ){\n\t\t\tif ( this.props.closeOnSelect && this.state.currentView !== 'time' ){\n\t\t\t\tupdate.open = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate.open = this.state.open;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState( update );\n\t},\n\n\tonInputChange: function( e ) {\n\t\tvar value = e.target === null ? e : e.target.value,\n\t\t\tlocalMoment = this.localMoment( value, this.state.inputFormat ),\n\t\t\tupdate = { inputValue: value }\n\t\t;\n\n\t\tif ( localMoment.isValid() && !this.props.value ) {\n\t\t\tupdate.selectedDate = localMoment;\n\t\t\tupdate.viewDate = localMoment.clone().startOf('month');\n\t\t}\n\t\telse {\n\t\t\tupdate.selectedDate = null;\n\t\t}\n\n\t\treturn this.setState( update, function() {\n\t\t\treturn this.props.onChange( localMoment.isValid() ? localMoment : this.state.inputValue );\n\t\t});\n\t},\n\n\tonInputKey: function( e ){\n\t\tif( e.which === 9 && this.props.closeOnTab ){\n\t\t\tthis.closeCalendar();\n\t\t}\n\t},\n\n\tshowView: function( view ){\n\t\tvar me = this;\n\t\treturn function(){\n\t\t\tme.setState({ currentView: view });\n\t\t};\n\t},\n\n\tsetDate: function( type ){\n\t\tvar me = this,\n\t\t\tnextViews = {\n\t\t\t\tmonth: 'days',\n\t\t\t\tyear: 'months'\n\t\t\t}\n\t\t;\n\t\treturn function( e ){\n\t\t\tme.setState({\n\t\t\t\tviewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value'), 10) ).startOf( type ),\n\t\t\t\tcurrentView: nextViews[ type ]\n\t\t\t});\n\t\t};\n\t},\n\n\taddTime: function( amount, type, toSelected ){\n\t\treturn this.updateTime( 'add', amount, type, toSelected );\n\t},\n\n\tsubtractTime: function( amount, type, toSelected ){\n\t\treturn this.updateTime( 'subtract', amount, type, toSelected );\n\t},\n\n\tupdateTime: function( op, amount, type, toSelected ){\n\t\tvar me = this;\n\n\t\treturn function(){\n\t\t\tvar update = {},\n\t\t\t\tdate = toSelected ? 'selectedDate' : 'viewDate'\n\t\t\t;\n\n\t\t\tupdate[ date ] = me.state[ date ].clone()[ op ]( amount, type );\n\n\t\t\tme.setState( update );\n\t\t};\n\t},\n\n\tallowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'],\n\tsetTime: function( type, value ){\n\t\tvar index = this.allowedSetTime.indexOf( type ) + 1,\n\t\t\tstate = this.state,\n\t\t\tdate = (state.selectedDate || state.viewDate).clone(),\n\t\t\tnextType\n\t\t;\n\n\t\t// It is needed to set all the time properties\n\t\t// to not to reset the time\n\t\tdate[ type ]( value );\n\t\tfor (; index < this.allowedSetTime.length; index++) {\n\t\t\tnextType = this.allowedSetTime[index];\n\t\t\tdate[ nextType ]( date[nextType]() );\n\t\t}\n\n\t\tif ( !this.props.value ){\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tinputValue: date.format( state.inputFormat )\n\t\t\t});\n\t\t}\n\t\tthis.props.onChange( date );\n\t},\n\n\tupdateSelectedDate: function( e, close ) {\n\t\tvar target = e.target,\n\t\t\tmodifier = 0,\n\t\t\tviewDate = this.state.viewDate,\n\t\t\tcurrentDate = this.state.selectedDate || viewDate,\n\t\t\tdate\n ;\n\n\t\tif (target.className.indexOf('rdtDay') !== -1){\n\t\t\tif (target.className.indexOf('rdtNew') !== -1)\n\t\t\t\tmodifier = 1;\n\t\t\telse if (target.className.indexOf('rdtOld') !== -1)\n\t\t\t\tmodifier = -1;\n\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( viewDate.month() + modifier )\n\t\t\t\t.date( parseInt( target.getAttribute('data-value'), 10 ) );\n\t\t} else if (target.className.indexOf('rdtMonth') !== -1){\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( parseInt( target.getAttribute('data-value'), 10 ) )\n\t\t\t\t.date( currentDate.date() );\n\t\t} else if (target.className.indexOf('rdtYear') !== -1){\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( currentDate.month() )\n\t\t\t\t.date( currentDate.date() )\n\t\t\t\t.year( parseInt( target.getAttribute('data-value'), 10 ) );\n\t\t}\n\n\t\tdate.hours( currentDate.hours() )\n\t\t\t.minutes( currentDate.minutes() )\n\t\t\t.seconds( currentDate.seconds() )\n\t\t\t.milliseconds( currentDate.milliseconds() );\n\n\t\tif ( !this.props.value ){\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tviewDate: date.clone().startOf('month'),\n\t\t\t\tinputValue: date.format( this.state.inputFormat ),\n\t\t\t\topen: !(this.props.closeOnSelect && close )\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.props.closeOnSelect && close) {\n\t\t\t\tthis.closeCalendar();\n\t\t\t}\n\t\t}\n\n\t\tthis.props.onChange( date );\n\t},\n\n\topenCalendar: function() {\n\t\tif (!this.state.open) {\n\t\t\tthis.props.onFocus();\n\t\t\tthis.setState({ open: true });\n\t\t}\n\t},\n\n\tcloseCalendar: function() {\n\t\tthis.setState({ open: false });\n\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t},\n\n\thandleClickOutside: function(){\n\t\tif ( this.props.input && this.state.open && !this.props.open ){\n\t\t\tthis.setState({ open: false });\n\t\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t\t}\n\t},\n\n\tlocalMoment: function( date, format ){\n\t\tvar m = moment( date, format, this.props.strictParsing );\n\t\tif ( this.props.locale )\n\t\t\tm.locale( this.props.locale );\n\t\treturn m;\n\t},\n\n\tcomponentProps: {\n\t\tfromProps: ['value', 'isValidDate', 'renderDay', 'renderMonth', 'renderYear'],\n\t\tfromState: ['viewDate', 'selectedDate', 'updateOn'],\n\t\tfromThis: ['setDate', 'setTime', 'showView', 'addTime', 'subtractTime', 'updateSelectedDate', 'localMoment']\n\t},\n\n\tgetComponentProps: function(){\n\t\tvar me = this,\n\t\t\tformats = this.getFormats( this.props ),\n\t\t\tprops = {dateFormat: formats.date, timeFormat: formats.time}\n\t\t;\n\n\t\tthis.componentProps.fromProps.forEach( function( name ){\n\t\t\tprops[ name ] = me.props[ name ];\n\t\t});\n\t\tthis.componentProps.fromState.forEach( function( name ){\n\t\t\tprops[ name ] = me.state[ name ];\n\t\t});\n\t\tthis.componentProps.fromThis.forEach( function( name ){\n\t\t\tprops[ name ] = me[ name ];\n\t\t});\n\n\t\treturn props;\n\t},\n\n\trender: function() {\n\t\tvar Component = this.viewComponents[ this.state.currentView ],\n\t\t\tDOM = React.DOM,\n\t\t\tclassName = 'rdt ' + this.props.className,\n\t\t\tchildren = []\n\t\t;\n\n\t\tif ( this.props.input ){\n\t\t\tchildren = [ DOM.input( assign({\n\t\t\t\tkey: 'i',\n\t\t\t\ttype:'text',\n\t\t\t\tclassName: 'form-control',\n\t\t\t\tonFocus: this.openCalendar,\n\t\t\t\tonChange: this.onInputChange,\n\t\t\t\tonKeyDown: this.onInputKey,\n\t\t\t\tvalue: this.state.inputValue\n\t\t\t}, this.props.inputProps ))];\n\t\t} else {\n\t\t\tclassName += ' rdtStatic';\n\t\t}\n\n\t\tif ( this.state.open )\n\t\t\tclassName += ' rdtOpen';\n\n\t\treturn DOM.div({className: className}, children.concat(\n\t\t\tDOM.div(\n\t\t\t\t{ key: 'dt', className: 'rdtPicker' },\n\t\t\t\tReact.createElement( Component, this.getComponentProps())\n\t\t\t)\n\t\t));\n\t}\n});\n\n// Make moment accessible through the Datetime class\nDatetime.moment = moment;\n\nmodule.exports = Datetime;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./Datetime.js\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./Datetime.js?"); | ||
@@ -81,3 +81,3 @@ /***/ }, | ||
eval("var React = __webpack_require__(2),\n\tmoment = __webpack_require__(4)\n;\n\nvar DOM = React.DOM;\nvar DateTimePickerDays = React.createClass({\n\n\trender: function() {\n\t\tvar footer = this.renderFooter(),\n\t\t\tdate = this.props.viewDate,\n\t\t\tlocale = date.localeData(),\n\t\t\ttableChildren\n\t\t;\n\n\t\ttableChildren = [\n\t\t\tDOM.thead({ key: 'th'}, [\n\t\t\t\tDOM.tr({ key: 'h'},[\n\t\t\t\t\tDOM.th({ key: 'p', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'months')}, '‹')),\n\t\t\t\t\tDOM.th({ key: 's', className: 'rdtSwitch', onClick: this.props.showView('months'), colSpan: 5, 'data-value': this.props.viewDate.month() }, locale.months( date ) + ' ' + date.year() ),\n\t\t\t\t\tDOM.th({ key: 'n', className: 'rdtNext' }, DOM.span({onClick: this.props.addTime(1, 'months')}, '›'))\n\t\t\t\t]),\n\t\t\t\tDOM.tr({ key: 'd'}, this.getDaysOfWeek( locale ).map( function( day, index ){ return DOM.th({ key: day + index, className: 'dow'}, day ); }) )\n\t\t\t]),\n\t\t\tDOM.tbody({key: 'tb'}, this.renderDays())\n\t\t];\n\n\t\tif( footer )\n\t\t\ttableChildren.push( footer );\n\n\t\treturn DOM.div({ className: 'rdtDays' },\n\t\t\tDOM.table({}, tableChildren )\n\t\t);\n\t},\n\n\t/**\n\t * Get a list of the days of the week\n\t * depending on the current locale\n\t * @return {array} A list with the shortname of the days\n\t */\n\tgetDaysOfWeek: function( locale ){\n\t\tvar days = locale._weekdaysMin,\n\t\t\tfirst = locale.firstDayOfWeek(),\n\t\t\tdow = [],\n\t\t\ti = 0\n\t\t;\n\n\t\tdays.forEach( function( day ){\n\t\t\tdow[ (7 + (i++) - first) % 7 ] = day;\n\t\t});\n\n\t\treturn dow;\n\t},\n\n\trenderDays: function() {\n\t\tvar date = this.props.viewDate,\n\t\t\tselected = this.props.selectedDate && this.props.selectedDate.clone(),\n\t\t\tprevMonth = date.clone().subtract( 1, 'months' ),\n\t\t\tcurrentYear = date.year(),\n\t\t\tcurrentMonth = date.month(),\n\t\t\tweeks = [],\n\t\t\tdays = [],\n\t\t\trenderer = this.props.renderDay || this.renderDay,\n\t\t\tisValid = this.props.isValidDate || this.isValidDate,\n\t\t\tclasses, disabled, dayProps, currentDate\n\t\t;\n\n\t\t// Go to the last week of the previous month\n\t\tprevMonth.date( prevMonth.daysInMonth() ).startOf('week');\n\t\tvar lastDay = prevMonth.clone().add(42, 'd');\n\n\t\twhile( prevMonth.isBefore( lastDay ) ){\n\t\t\tclasses = 'rdtDay';\n\t\t\tcurrentDate = prevMonth.clone();\n\n\t\t\tif( ( prevMonth.year() == currentYear && prevMonth.month() < currentMonth ) || ( prevMonth.year() < currentYear ) )\n\t\t\t\tclasses += ' rdtOld';\n\t\t\telse if( ( prevMonth.year() == currentYear && prevMonth.month() > currentMonth ) || ( prevMonth.year() > currentYear ) )\n\t\t\t\tclasses += ' rdtNew';\n\n\t\t\tif( selected && prevMonth.isSame(selected, 'day') )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tif (prevMonth.isSame(moment(), 'day') )\n\t\t\t\tclasses += ' rdtToday';\n\n\t\t\tdisabled = !isValid( currentDate, selected );\n\t\t\tif( disabled )\n\t\t\t\tclasses += ' rdtDisabled';\n\n\t\t\tdayProps = {\n\t\t\t\tkey: prevMonth.format('M_D'),\n\t\t\t\t'data-value': prevMonth.date(),\n\t\t\t\tclassName: classes\n\t\t\t};\n\t\t\tif( !disabled )\n\t\t\t\tdayProps.onClick = this.updateSelectedDate;\n\n\t\t\tdays.push( renderer( dayProps, currentDate, selected ) );\n\n\t\t\tif( days.length == 7 ){\n\t\t\t\tweeks.push( DOM.tr( {key: prevMonth.format('M_D')}, days ) );\n\t\t\t\tdays = [];\n\t\t\t}\n\n\t\t\tprevMonth.add( 1, 'd' );\n\t\t}\n\n\t\treturn weeks;\n\t},\n\n\tupdateSelectedDate: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderDay: function( props, currentDate, selectedDate ){\n\t\treturn DOM.td( props, currentDate.date() );\n\t},\n\n\trenderFooter: function(){\n\t\tif( !this.props.timeFormat )\n\t\t\treturn '';\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\n\t\treturn DOM.tfoot({ key: 'tf'},\n\t\t\tDOM.tr({},\n\t\t\t\tDOM.td({ onClick: this.props.showView('time'), colSpan: 7, className: 'rdtTimeToggle'}, date.format( this.props.timeFormat ))\n\t\t\t)\n\t\t);\n\t},\n\tisValidDate: function(){ return 1; }\n});\n\nmodule.exports = DateTimePickerDays;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/DaysView.js\n ** module id = 3\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/DaysView.js?"); | ||
eval("'use strict';\n\nvar React = __webpack_require__(2),\n\tmoment = __webpack_require__(4)\n;\n\nvar DOM = React.DOM;\nvar DateTimePickerDays = React.createClass({\n\n\trender: function() {\n\t\tvar footer = this.renderFooter(),\n\t\t\tdate = this.props.viewDate,\n\t\t\tlocale = date.localeData(),\n\t\t\ttableChildren\n\t\t;\n\n\t\ttableChildren = [\n\t\t\tDOM.thead({ key: 'th'}, [\n\t\t\t\tDOM.tr({ key: 'h'}, [\n\t\t\t\t\tDOM.th({ key: 'p', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'months')}, '‹')),\n\t\t\t\t\tDOM.th({ key: 's', className: 'rdtSwitch', onClick: this.props.showView('months'), colSpan: 5, 'data-value': this.props.viewDate.month() }, locale.months( date ) + ' ' + date.year() ),\n\t\t\t\t\tDOM.th({ key: 'n', className: 'rdtNext' }, DOM.span({onClick: this.props.addTime(1, 'months')}, '›'))\n\t\t\t\t]),\n\t\t\t\tDOM.tr({ key: 'd'}, this.getDaysOfWeek( locale ).map( function( day, index ){ return DOM.th({ key: day + index, className: 'dow'}, day ); }) )\n\t\t\t]),\n\t\t\tDOM.tbody({key: 'tb'}, this.renderDays())\n\t\t];\n\n\t\tif ( footer )\n\t\t\ttableChildren.push( footer );\n\n\t\treturn DOM.div({ className: 'rdtDays' },\n\t\t\tDOM.table({}, tableChildren )\n\t\t);\n\t},\n\n\t/**\n\t * Get a list of the days of the week\n\t * depending on the current locale\n\t * @return {array} A list with the shortname of the days\n\t */\n\tgetDaysOfWeek: function( locale ){\n\t\tvar days = locale._weekdaysMin,\n\t\t\tfirst = locale.firstDayOfWeek(),\n\t\t\tdow = [],\n\t\t\ti = 0\n\t\t;\n\n\t\tdays.forEach( function( day ){\n\t\t\tdow[ (7 + (i++) - first) % 7 ] = day;\n\t\t});\n\n\t\treturn dow;\n\t},\n\n\trenderDays: function() {\n\t\tvar date = this.props.viewDate,\n\t\t\tselected = this.props.selectedDate && this.props.selectedDate.clone(),\n\t\t\tprevMonth = date.clone().subtract( 1, 'months' ),\n\t\t\tcurrentYear = date.year(),\n\t\t\tcurrentMonth = date.month(),\n\t\t\tweeks = [],\n\t\t\tdays = [],\n\t\t\trenderer = this.props.renderDay || this.renderDay,\n\t\t\tisValid = this.props.isValidDate || this.isValidDate,\n\t\t\tclasses, disabled, dayProps, currentDate\n\t\t;\n\n\t\t// Go to the last week of the previous month\n\t\tprevMonth.date( prevMonth.daysInMonth() ).startOf('week');\n\t\tvar lastDay = prevMonth.clone().add(42, 'd');\n\n\t\twhile ( prevMonth.isBefore( lastDay ) ){\n\t\t\tclasses = 'rdtDay';\n\t\t\tcurrentDate = prevMonth.clone();\n\n\t\t\tif ( ( prevMonth.year() === currentYear && prevMonth.month() < currentMonth ) || ( prevMonth.year() < currentYear ) )\n\t\t\t\tclasses += ' rdtOld';\n\t\t\telse if ( ( prevMonth.year() === currentYear && prevMonth.month() > currentMonth ) || ( prevMonth.year() > currentYear ) )\n\t\t\t\tclasses += ' rdtNew';\n\n\t\t\tif ( selected && prevMonth.isSame(selected, 'day') )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tif (prevMonth.isSame(moment(), 'day') )\n\t\t\t\tclasses += ' rdtToday';\n\n\t\t\tdisabled = !isValid( currentDate, selected );\n\t\t\tif ( disabled )\n\t\t\t\tclasses += ' rdtDisabled';\n\n\t\t\tdayProps = {\n\t\t\t\tkey: prevMonth.format('M_D'),\n\t\t\t\t'data-value': prevMonth.date(),\n\t\t\t\tclassName: classes\n\t\t\t};\n\t\t\tif ( !disabled )\n\t\t\t\tdayProps.onClick = this.updateSelectedDate;\n\n\t\t\tdays.push( renderer( dayProps, currentDate, selected ) );\n\n\t\t\tif ( days.length === 7 ){\n\t\t\t\tweeks.push( DOM.tr( {key: prevMonth.format('M_D')}, days ) );\n\t\t\t\tdays = [];\n\t\t\t}\n\n\t\t\tprevMonth.add( 1, 'd' );\n\t\t}\n\n\t\treturn weeks;\n\t},\n\n\tupdateSelectedDate: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderDay: function( props, currentDate ){\n\t\treturn DOM.td( props, currentDate.date() );\n\t},\n\n\trenderFooter: function(){\n\t\tif ( !this.props.timeFormat )\n\t\t\treturn '';\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\n\t\treturn DOM.tfoot({ key: 'tf'},\n\t\t\tDOM.tr({},\n\t\t\t\tDOM.td({ onClick: this.props.showView('time'), colSpan: 7, className: 'rdtTimeToggle'}, date.format( this.props.timeFormat ))\n\t\t\t)\n\t\t);\n\t},\n\tisValidDate: function(){ return 1; }\n});\n\nmodule.exports = DateTimePickerDays;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/DaysView.js\n ** module id = 3\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/DaysView.js?"); | ||
@@ -94,3 +94,3 @@ /***/ }, | ||
eval("'use strict';\n\nvar React = __webpack_require__(2),\nmoment = __webpack_require__(4)\n;\n\nvar DOM = React.DOM;\nvar DateTimePickerMonths = React.createClass({\n\trender: function() {\n\t\treturn DOM.div({ className: 'rdtMonths' },[\n\t\t\tDOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({},[\n\t\t\t\tDOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'years')}, '‹')),\n\t\t\t\tDOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2, 'data-value': this.props.viewDate.year()}, this.props.viewDate.year() ),\n\t\t\t\tDOM.th({ key: 'next', className: 'rdtNext' }, DOM.span({onClick: this.props.addTime(1, 'years')}, '›'))\n\t\t\t]))),\n\t\t\tDOM.table({ key: 'months'}, DOM.tbody({ key: 'b'}, this.renderMonths()))\n\t\t]);\n\t},\n\n\trenderMonths: function() {\n\t\tvar date = this.props.selectedDate,\n\t\t\tmonth = this.props.viewDate.month(),\n\t\t\tyear = this.props.viewDate.year(),\n\t\t\trows = [],\n\t\t\ti = 0,\n\t\t\tmonths = [],\n\t\t\trenderer = this.props.renderMonth || this.renderMonth,\n\t\t\tclasses, props\n\t\t;\n\n\t\twhile (i < 12) {\n\t\t\tclasses = \"rdtMonth\";\n\t\t\tif( date && i === month && year === date.year() )\n\t\t\t\tclasses += \" rdtActive\";\n\n\t\t\tprops = {\n\t\t\t\tkey: i,\n\t\t\t\t'data-value': i,\n\t\t\t\tclassName: classes,\n\t\t\t\tonClick: this.props.updateOn==\"months\"? this.updateSelectedMonth : this.props.setDate('month')\n\t\t\t};\n\n\t\t\tmonths.push( renderer( props, i, year, date && date.clone() ));\n\n\t\t\tif( months.length == 4 ){\n\t\t\t\trows.push( DOM.tr({ key: month + '_' + rows.length }, months) );\n\t\t\t\tmonths = [];\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedMonth: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderMonth: function( props, month, year, selectedDate ) {\n\t\tvar monthsShort = this.props.viewDate.localeData()._monthsShort\n\t\treturn DOM.td( props, monthsShort.standalone\n\t\t\t? capitalize( monthsShort.standalone[ month ] )\n\t\t\t: monthsShort[ month ]\n\t\t)\n\t}\n});\n\nfunction capitalize(str) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nmodule.exports = DateTimePickerMonths;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/MonthsView.js\n ** module id = 5\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/MonthsView.js?"); | ||
eval("'use strict';\n\nvar React = __webpack_require__(2);\n\nvar DOM = React.DOM;\nvar DateTimePickerMonths = React.createClass({\n\trender: function() {\n\t\treturn DOM.div({ className: 'rdtMonths' }, [\n\t\t\tDOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({}, [\n\t\t\t\tDOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'years')}, '‹')),\n\t\t\t\tDOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2, 'data-value': this.props.viewDate.year()}, this.props.viewDate.year() ),\n\t\t\t\tDOM.th({ key: 'next', className: 'rdtNext' }, DOM.span({onClick: this.props.addTime(1, 'years')}, '›'))\n\t\t\t]))),\n\t\t\tDOM.table({ key: 'months'}, DOM.tbody({ key: 'b'}, this.renderMonths()))\n\t\t]);\n\t},\n\n\trenderMonths: function() {\n\t\tvar date = this.props.selectedDate,\n\t\t\tmonth = this.props.viewDate.month(),\n\t\t\tyear = this.props.viewDate.year(),\n\t\t\trows = [],\n\t\t\ti = 0,\n\t\t\tmonths = [],\n\t\t\trenderer = this.props.renderMonth || this.renderMonth,\n\t\t\tclasses, props\n\t\t;\n\n\t\twhile (i < 12) {\n\t\t\tclasses = 'rdtMonth';\n\t\t\tif ( date && i === month && year === date.year() )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tprops = {\n\t\t\t\tkey: i,\n\t\t\t\t'data-value': i,\n\t\t\t\tclassName: classes,\n\t\t\t\tonClick: this.props.updateOn === 'months'? this.updateSelectedMonth : this.props.setDate('month')\n\t\t\t};\n\n\t\t\tmonths.push( renderer( props, i, year, date && date.clone() ));\n\n\t\t\tif ( months.length === 4 ){\n\t\t\t\trows.push( DOM.tr({ key: month + '_' + rows.length }, months) );\n\t\t\t\tmonths = [];\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedMonth: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderMonth: function( props, month ) {\n\t\tvar monthsShort = this.props.viewDate.localeData()._monthsShort;\n\t\treturn DOM.td( props, monthsShort.standalone\n\t\t\t? capitalize( monthsShort.standalone[ month ] )\n\t\t\t: monthsShort[ month ]\n\t\t);\n\t}\n});\n\nfunction capitalize(str) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = DateTimePickerMonths;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/MonthsView.js\n ** module id = 5\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/MonthsView.js?"); | ||
@@ -101,3 +101,3 @@ /***/ }, | ||
eval("'use strict';\n\nvar React = __webpack_require__(2);\n\nvar DOM = React.DOM;\nvar DateTimePickerYears = React.createClass({\n\trender: function() {\n\t\tvar year = parseInt(this.props.viewDate.year() / 10, 10) * 10;\n\n\t\treturn DOM.div({ className: 'rdtYears' },[\n\t\t\tDOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({},[\n\t\t\t\tDOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(10, 'years')}, '‹')),\n\t\t\t\tDOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2 }, year + '-' + (year + 9) ),\n\t\t\t\tDOM.th({ key: 'next', className: 'rdtNext'}, DOM.span({onClick: this.props.addTime(10, 'years')}, '›'))\n\t\t\t\t]))),\n\t\t\tDOM.table({ key: 'years'}, DOM.tbody({}, this.renderYears( year )))\n\t\t]);\n\t},\n\n\trenderYears: function( year ) {\n\t\tvar years = [],\n\t\t\ti = -1,\n\t\t\trows = [],\n\t\t\trenderer = this.props.renderYear || this.renderYear,\n\t\t\tselectedDate = this.props.selectedDate,\n\t\t\tclasses, props\n\t\t;\n\n\t\tyear--;\n\t\twhile (i < 11) {\n\t\t\tclasses = 'rdtYear';\n\t\t\tif( i === -1 | i === 10 )\n\t\t\t\tclasses += ' rdtOld';\n\t\t\tif( selectedDate && selectedDate.year() === year )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tprops = {\n\t\t\t\tkey: year,\n\t\t\t\t'data-value': year,\n\t\t\t\tclassName: classes,\n\t\t\t\tonClick: this.props.updateOn==\"years\" ? this.updateSelectedYear : this.props.setDate('year')\n\t\t\t};\n\n\t\t\tyears.push( renderer( props, year, selectedDate && selectedDate.clone() ));\n\n\t\t\tif( years.length == 4 ){\n\t\t\t\trows.push( DOM.tr({ key: i }, years ) );\n\t\t\t\tyears = [];\n\t\t\t}\n\n\t\t\tyear++;\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedYear: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderYear: function( props, year, selectedDate ){\n\t\treturn DOM.td( props, year );\n\t}\n});\n\nmodule.exports = DateTimePickerYears;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/YearsView.js\n ** module id = 6\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/YearsView.js?"); | ||
eval("'use strict';\n\nvar React = __webpack_require__(2);\n\nvar DOM = React.DOM;\nvar DateTimePickerYears = React.createClass({\n\trender: function() {\n\t\tvar year = parseInt(this.props.viewDate.year() / 10, 10) * 10;\n\n\t\treturn DOM.div({ className: 'rdtYears' }, [\n\t\t\tDOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({}, [\n\t\t\t\tDOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(10, 'years')}, '‹')),\n\t\t\t\tDOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2 }, year + '-' + (year + 9) ),\n\t\t\t\tDOM.th({ key: 'next', className: 'rdtNext'}, DOM.span({onClick: this.props.addTime(10, 'years')}, '›'))\n\t\t\t\t]))),\n\t\t\tDOM.table({ key: 'years'}, DOM.tbody({}, this.renderYears( year )))\n\t\t]);\n\t},\n\n\trenderYears: function( year ) {\n\t\tvar years = [],\n\t\t\ti = -1,\n\t\t\trows = [],\n\t\t\trenderer = this.props.renderYear || this.renderYear,\n\t\t\tselectedDate = this.props.selectedDate,\n\t\t\tclasses, props\n\t\t;\n\n\t\tyear--;\n\t\twhile (i < 11) {\n\t\t\tclasses = 'rdtYear';\n\t\t\tif ( i === -1 | i === 10 )\n\t\t\t\tclasses += ' rdtOld';\n\t\t\tif ( selectedDate && selectedDate.year() === year )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tprops = {\n\t\t\t\tkey: year,\n\t\t\t\t'data-value': year,\n\t\t\t\tclassName: classes,\n\t\t\t\tonClick: this.props.updateOn === 'years' ? this.updateSelectedYear : this.props.setDate('year')\n\t\t\t};\n\n\t\t\tyears.push( renderer( props, year, selectedDate && selectedDate.clone() ));\n\n\t\t\tif ( years.length === 4 ){\n\t\t\t\trows.push( DOM.tr({ key: i }, years ) );\n\t\t\t\tyears = [];\n\t\t\t}\n\n\t\t\tyear++;\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedYear: function( event ) {\n\t\tthis.props.updateSelectedDate(event, true);\n\t},\n\n\trenderYear: function( props, year ){\n\t\treturn DOM.td( props, year );\n\t}\n});\n\nmodule.exports = DateTimePickerYears;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/YearsView.js\n ** module id = 6\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/YearsView.js?"); | ||
@@ -108,3 +108,3 @@ /***/ }, | ||
eval("'use strict';\n\nvar React = __webpack_require__(2);\n\nvar DOM = React.DOM;\nvar DateTimePickerTime = React.createClass({\n\tgetInitialState: function(){\n\t\treturn this.calculateState( this.props );\n\t},\n\tcalculateState: function( props ){\n\t\tvar date = props.selectedDate || props.viewDate,\n\t\t\tformat = props.timeFormat,\n\t\t\tcounters = []\n\t\t;\n\n\t\tif( format.indexOf('H') != -1 || format.indexOf('h') != -1 ){\n\t\t\tcounters.push('hours');\n\t\t\tif( format.indexOf('m') != -1 ){\n\t\t\t\tcounters.push('minutes');\n\t\t\t\tif( format.indexOf('s') != -1 ){\n\t\t\t\t\tcounters.push('seconds');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar daypart = false;\n\t\tif( this.props.timeFormat.indexOf(' A') != -1 && this.state != null ){\n\t\t\tdaypart = ( this.state.hours >= 12 ) ? 'PM' : 'AM';\n\t\t}\n\n\t\treturn {\n\t\t\thours: date.format('H'),\n\t\t\tminutes: date.format('mm'),\n\t\t\tseconds: date.format('ss'),\n\t\t\tmilliseconds: date.format('SSS'),\n\t\t\tdaypart: daypart,\n\t\t\tcounters: counters\n\t\t};\n\t},\n\trenderCounter: function( type ){\n\t\tif (type !== 'daypart') {\n\t\t\tvar value = this.state[ type ];\n\t\t\tif (type === 'hours' && this.props.timeFormat.indexOf(' A') != -1 && value > 12) {\n\t\t\t\tif(value > 12){\n\t\t\t\t\tvalue = value - 12;\n\t\t\t\t}\n\t\t\t\tif(value == 0) {\n\t\t\t\t\tvalue = 12;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn DOM.div({ key: type, className: 'rdtCounter'}, [\n\t\t\t\tDOM.span({ key:'up', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'increase', type ) }, '▲' ),\n\t\t\t\tDOM.div({ key:'c', className: 'rdtCount' }, value ),\n\t\t\t\tDOM.span({ key:'do', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'decrease', type ) }, '▼' )\n\t\t\t]);\n\t\t}\n\t\treturn '';\n\t},\n\trender: function() {\n\t\tvar me = this,\n\t\t\tcounters = []\n\t\t;\n\n\t\tthis.state.counters.forEach( function(c){\n\t\t\tif( counters.length )\n\t\t\t\tcounters.push( DOM.div( {key: 'sep' + counters.length, className: 'rdtCounterSeparator' }, ':' ));\n\t\t\tcounters.push( me.renderCounter( c ) );\n\t\t});\n\n\n\t\tif (this.state.daypart !== false) {\n\t\t\tcounters.push(DOM.div({ key: this.state.daypart, className: 'rdtDayPart'}, this.state.daypart ));\n\t\t}\n\n\t\tif( this.state.counters.length == 3 && this.props.timeFormat.indexOf('S') != -1 ){\n\t\t\tcounters.push( DOM.div( {className: 'rdtCounterSeparator', key: 'sep5' }, ':' ));\n\t\t\tcounters.push(\n\t\t\t\tDOM.div( {className: 'rdtCounter rdtMilli', key:'m'},\n\t\t\t\t\tDOM.input({ value: this.state.milliseconds, type: 'text', onChange: this.updateMilli })\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\n\t\treturn DOM.div( {className: 'rdtTime'},\n\t\t\tDOM.table( {}, [\n\t\t\t\tthis.renderHeader(),\n\t\t\t\tDOM.tbody({key: 'b'}, DOM.tr({}, DOM.td({},\n\t\t\t\t\tDOM.div({ className: 'rdtCounters' }, counters )\n\t\t\t\t)))\n\t\t\t])\n\t\t);\n\t},\n\tcomponentWillReceiveProps: function( nextProps, nextState ){\n\t\tthis.setState( this.calculateState( nextProps ) );\n\t},\n\tupdateMilli: function( e ){\n\t\tvar milli = parseInt( e.target.value );\n\t\tif( milli == e.target.value && milli >= 0 && milli < 1000 ){\n\t\t\tthis.props.setTime( 'milliseconds', milli );\n\t\t\tthis.setState({ milliseconds: milli });\n\t\t}\n\t},\n\trenderHeader: function(){\n\t\tif( !this.props.dateFormat )\n\t\t\treturn null;\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\t\treturn DOM.thead({ key: 'h'}, DOM.tr({},\n\t\t\tDOM.th( {className: 'rdtSwitch', colSpan: 4, onClick: this.props.showView('days')}, date.format( this.props.dateFormat ) )\n\t\t));\n\t},\n\tonStartClicking: function( action, type ){\n\t\tvar me = this,\n\t\t\tupdate = {},\n\t\t\tvalue = this.state[ type ]\n\t\t;\n\n\n\t\treturn function(){\n\t\t\tvar update = {};\n\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\tme.setState( update );\n\n\t\t\tme.timer = setTimeout( function(){\n\t\t\t\tme.increaseTimer = setInterval( function(){\n\t\t\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\t\t\tme.setState( update );\n\t\t\t\t},70);\n\t\t\t}, 500);\n\n\t\t\tme.mouseUpListener = function(){\n\t\t\t\tclearTimeout( me.timer );\n\t\t\t\tclearInterval( me.increaseTimer );\n\t\t\t\tme.props.setTime( type, me.state[ type ] );\n\t\t\t\tdocument.body.removeEventListener('mouseup', me.mouseUpListener);\n\t\t\t};\n\n\t\t\tdocument.body.addEventListener('mouseup', me.mouseUpListener);\n\t\t};\n\t},\n\n\tmaxValues: {\n\t\thours: 23,\n\t\tminutes: 59,\n\t\tseconds: 59,\n\t\tmilliseconds: 999\n\t},\n\tpadValues: {\n\t\thours: 1,\n\t\tminutes: 2,\n\t\tseconds: 2,\n\t\tmilliseconds: 3\n\t},\n\tincrease: function( type ){\n\t\tvar value = parseInt(this.state[ type ]) + 1;\n\t\tif( value > this.maxValues[ type ] )\n\t\t\tvalue = 0;\n\t\treturn this.pad( type, value );\n\t},\n\tdecrease: function( type ){\n\t\tvar value = parseInt(this.state[ type ]) - 1;\n\t\tif( value < 0 )\n\t\t\tvalue = this.maxValues[ type ];\n\t\treturn this.pad( type, value );\n\t},\n\tpad: function( type, value ){\n\t\tvar str = value + '';\n\t\twhile( str.length < this.padValues[ type ] )\n\t\t\tstr = '0' + str;\n\t\treturn str;\n\t}\n});\n\nmodule.exports = DateTimePickerTime;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/TimeView.js\n ** module id = 7\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/TimeView.js?"); | ||
eval("'use strict';\n\nvar React = __webpack_require__(2);\n\nvar DOM = React.DOM;\nvar DateTimePickerTime = React.createClass({\n\tgetInitialState: function(){\n\t\treturn this.calculateState( this.props );\n\t},\n\tcalculateState: function( props ){\n\t\tvar date = props.selectedDate || props.viewDate,\n\t\t\tformat = props.timeFormat,\n\t\t\tcounters = []\n\t\t;\n\n\t\tif ( format.indexOf('H') !== -1 || format.indexOf('h') !== -1 ){\n\t\t\tcounters.push('hours');\n\t\t\tif ( format.indexOf('m') !== -1 ){\n\t\t\t\tcounters.push('minutes');\n\t\t\t\tif ( format.indexOf('s') !== -1 ){\n\t\t\t\t\tcounters.push('seconds');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar daypart = false;\n\t\tif ( this.props.timeFormat.indexOf(' A') !== -1 && this.state !== null ){\n\t\t\tdaypart = ( this.state.hours >= 12 ) ? 'PM' : 'AM';\n\t\t}\n\n\t\treturn {\n\t\t\thours: date.format('H'),\n\t\t\tminutes: date.format('mm'),\n\t\t\tseconds: date.format('ss'),\n\t\t\tmilliseconds: date.format('SSS'),\n\t\t\tdaypart: daypart,\n\t\t\tcounters: counters\n\t\t};\n\t},\n\trenderCounter: function( type ){\n\t\tif (type !== 'daypart') {\n\t\t\tvar value = this.state[ type ];\n\t\t\tif (type === 'hours' && this.props.timeFormat.indexOf(' A') !== -1 && value > 12) {\n\t\t\t\tif (value > 12){\n\t\t\t\t\tvalue = value - 12;\n\t\t\t\t}\n\t\t\t\tif (value === 0) {\n\t\t\t\t\tvalue = 12;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn DOM.div({ key: type, className: 'rdtCounter'}, [\n\t\t\t\tDOM.span({ key:'up', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'increase', type ) }, '▲' ),\n\t\t\t\tDOM.div({ key:'c', className: 'rdtCount' }, value ),\n\t\t\t\tDOM.span({ key:'do', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'decrease', type ) }, '▼' )\n\t\t\t]);\n\t\t}\n\t\treturn '';\n\t},\n\trender: function() {\n\t\tvar me = this,\n\t\t\tcounters = []\n\t\t;\n\n\t\tthis.state.counters.forEach( function(c){\n\t\t\tif ( counters.length )\n\t\t\t\tcounters.push( DOM.div( {key: 'sep' + counters.length, className: 'rdtCounterSeparator' }, ':' ));\n\t\t\tcounters.push( me.renderCounter( c ) );\n\t\t});\n\n\t\tif (this.state.daypart !== false) {\n\t\t\tcounters.push(DOM.div({ key: this.state.daypart, className: 'rdtDayPart'}, this.state.daypart ));\n\t\t}\n\n\t\tif ( this.state.counters.length === 3 && this.props.timeFormat.indexOf('S') !== -1 ){\n\t\t\tcounters.push( DOM.div( {className: 'rdtCounterSeparator', key: 'sep5' }, ':' ));\n\t\t\tcounters.push(\n\t\t\t\tDOM.div( {className: 'rdtCounter rdtMilli', key:'m'},\n\t\t\t\t\tDOM.input({ value: this.state.milliseconds, type: 'text', onChange: this.updateMilli })\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\n\t\treturn DOM.div( {className: 'rdtTime'},\n\t\t\tDOM.table( {}, [\n\t\t\t\tthis.renderHeader(),\n\t\t\t\tDOM.tbody({key: 'b'}, DOM.tr({}, DOM.td({},\n\t\t\t\t\tDOM.div({ className: 'rdtCounters' }, counters )\n\t\t\t\t)))\n\t\t\t])\n\t\t);\n\t},\n\tcomponentWillReceiveProps: function( nextProps ){\n\t\tthis.setState( this.calculateState( nextProps ) );\n\t},\n\tupdateMilli: function( e ){\n\t\tvar milli = parseInt( e.target.value, 10 );\n\t\tif ( milli === e.target.value && milli >= 0 && milli < 1000 ){\n\t\t\tthis.props.setTime( 'milliseconds', milli );\n\t\t\tthis.setState({ milliseconds: milli });\n\t\t}\n\t},\n\trenderHeader: function(){\n\t\tif ( !this.props.dateFormat )\n\t\t\treturn null;\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\t\treturn DOM.thead({ key: 'h'}, DOM.tr({},\n\t\t\tDOM.th( {className: 'rdtSwitch', colSpan: 4, onClick: this.props.showView('days')}, date.format( this.props.dateFormat ) )\n\t\t));\n\t},\n\tonStartClicking: function( action, type ){\n\t\tvar me = this;\n\n\t\treturn function(){\n\t\t\tvar update = {};\n\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\tme.setState( update );\n\n\t\t\tme.timer = setTimeout( function(){\n\t\t\t\tme.increaseTimer = setInterval( function(){\n\t\t\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\t\t\tme.setState( update );\n\t\t\t\t}, 70);\n\t\t\t}, 500);\n\n\t\t\tme.mouseUpListener = function(){\n\t\t\t\tclearTimeout( me.timer );\n\t\t\t\tclearInterval( me.increaseTimer );\n\t\t\t\tme.props.setTime( type, me.state[ type ] );\n\t\t\t\tdocument.body.removeEventListener('mouseup', me.mouseUpListener);\n\t\t\t};\n\n\t\t\tdocument.body.addEventListener('mouseup', me.mouseUpListener);\n\t\t};\n\t},\n\n\tmaxValues: {\n\t\thours: 23,\n\t\tminutes: 59,\n\t\tseconds: 59,\n\t\tmilliseconds: 999\n\t},\n\tpadValues: {\n\t\thours: 1,\n\t\tminutes: 2,\n\t\tseconds: 2,\n\t\tmilliseconds: 3\n\t},\n\tincrease: function( type ){\n\t\tvar value = parseInt(this.state[ type ], 10) + 1;\n\t\tif ( value > this.maxValues[ type ] )\n\t\t\tvalue = 0;\n\t\treturn this.pad( type, value );\n\t},\n\tdecrease: function( type ){\n\t\tvar value = parseInt(this.state[ type ], 10) - 1;\n\t\tif ( value < 0 )\n\t\t\tvalue = this.maxValues[ type ];\n\t\treturn this.pad( type, value );\n\t},\n\tpad: function( type, value ){\n\t\tvar str = value + '';\n\t\twhile ( str.length < this.padValues[ type ] )\n\t\t\tstr = '0' + str;\n\t\treturn str;\n\t}\n});\n\nmodule.exports = DateTimePickerTime;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/TimeView.js\n ** module id = 7\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/TimeView.js?"); | ||
@@ -115,3 +115,3 @@ /***/ }, | ||
eval("// This is extracted from https://github.com/Pomax/react-onclickoutside\n// And modified to support react 0.13 and react 0.14\n\nvar React = __webpack_require__(2),\n\tversion = React.version && React.version.split('.')\n;\n\nif( version && ( version[0] > 0 || version[1] > 13 ) )\n\tReact = __webpack_require__(9);\n\n// Use a parallel array because we can't use\n// objects as keys, they get toString-coerced\nvar registeredComponents = [];\nvar handlers = [];\n\nvar IGNORE_CLASS = 'ignore-react-onclickoutside';\n\nvar isSourceFound = function(source, localNode) {\n if (source === localNode) {\n return true;\n }\n // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n if (source.correspondingElement) {\n return source.correspondingElement.classList.contains(IGNORE_CLASS);\n }\n return source.classList.contains(IGNORE_CLASS);\n};\n\nmodule.exports = {\n componentDidMount: function() {\n if(typeof this.handleClickOutside !== \"function\")\n throw new Error(\"Component lacks a handleClickOutside(event) function for processing outside click events.\");\n\n var fn = this.__outsideClickHandler = (function(localNode, eventHandler) {\n return function(evt) {\n evt.stopPropagation();\n var source = evt.target;\n var found = false;\n // If source=local then this event came from \"somewhere\"\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's \"you shouldn't care about the DOM\" philosophy.\n while(source.parentNode) {\n found = isSourceFound(source, localNode);\n if(found) return;\n source = source.parentNode;\n }\n eventHandler(evt);\n }\n }(React.findDOMNode(this), this.handleClickOutside));\n\n var pos = registeredComponents.length;\n registeredComponents.push(this);\n handlers[pos] = fn;\n\n // If there is a truthy disableOnClickOutside property for this\n // component, don't immediately start listening for outside events.\n if (!this.props.disableOnClickOutside) {\n this.enableOnClickOutside();\n }\n },\n\n componentWillUnmount: function() {\n this.disableOnClickOutside();\n this.__outsideClickHandler = false;\n var pos = registeredComponents.indexOf(this);\n if( pos>-1) {\n if (handlers[pos]) {\n // clean up so we don't leak memory\n handlers.splice(pos, 1);\n registeredComponents.splice(pos, 1);\n }\n }\n },\n\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n enableOnClickOutside: function() {\n var fn = this.__outsideClickHandler;\n document.addEventListener(\"mousedown\", fn);\n document.addEventListener(\"touchstart\", fn);\n },\n\n /**\n * Can be called to explicitly disable event listening\n * for clicks and touches outside of this element.\n */\n disableOnClickOutside: function() {\n var fn = this.__outsideClickHandler;\n document.removeEventListener(\"mousedown\", fn);\n document.removeEventListener(\"touchstart\", fn);\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/onClickOutside.js\n ** module id = 8\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/onClickOutside.js?"); | ||
eval("'use strict';\n\n// This is extracted from https://github.com/Pomax/react-onclickoutside\n// And modified to support react 0.13 and react 0.14\n\nvar React = __webpack_require__(2),\n\tversion = React.version && React.version.split('.')\n;\n\nif ( version && ( version[0] > 0 || version[1] > 13 ) )\n\tReact = __webpack_require__(9);\n\n// Use a parallel array because we can't use\n// objects as keys, they get toString-coerced\nvar registeredComponents = [];\nvar handlers = [];\n\nvar IGNORE_CLASS = 'ignore-react-onclickoutside';\n\nvar isSourceFound = function(source, localNode) {\n if (source === localNode) {\n return true;\n }\n // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n if (source.correspondingElement) {\n return source.correspondingElement.classList.contains(IGNORE_CLASS);\n }\n return source.classList.contains(IGNORE_CLASS);\n};\n\nmodule.exports = {\n componentDidMount: function() {\n if (typeof this.handleClickOutside !== 'function')\n throw new Error('Component lacks a handleClickOutside(event) function for processing outside click events.');\n\n var fn = this.__outsideClickHandler = (function(localNode, eventHandler) {\n return function(evt) {\n evt.stopPropagation();\n var source = evt.target;\n var found = false;\n // If source=local then this event came from \"somewhere\"\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's \"you shouldn't care about the DOM\" philosophy.\n while (source.parentNode) {\n found = isSourceFound(source, localNode);\n if (found) return;\n source = source.parentNode;\n }\n eventHandler(evt);\n };\n }(React.findDOMNode(this), this.handleClickOutside));\n\n var pos = registeredComponents.length;\n registeredComponents.push(this);\n handlers[pos] = fn;\n\n // If there is a truthy disableOnClickOutside property for this\n // component, don't immediately start listening for outside events.\n if (!this.props.disableOnClickOutside) {\n this.enableOnClickOutside();\n }\n },\n\n componentWillUnmount: function() {\n this.disableOnClickOutside();\n this.__outsideClickHandler = false;\n var pos = registeredComponents.indexOf(this);\n if ( pos>-1) {\n if (handlers[pos]) {\n // clean up so we don't leak memory\n handlers.splice(pos, 1);\n registeredComponents.splice(pos, 1);\n }\n }\n },\n\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n enableOnClickOutside: function() {\n var fn = this.__outsideClickHandler;\n document.addEventListener('mousedown', fn);\n document.addEventListener('touchstart', fn);\n },\n\n /**\n * Can be called to explicitly disable event listening\n * for clicks and touches outside of this element.\n */\n disableOnClickOutside: function() {\n var fn = this.__outsideClickHandler;\n document.removeEventListener('mousedown', fn);\n document.removeEventListener('touchstart', fn);\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/onClickOutside.js\n ** module id = 8\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/onClickOutside.js?"); | ||
@@ -118,0 +118,0 @@ /***/ }, |
/* | ||
react-datetime v2.3.3 | ||
react-datetime v2.4.0 | ||
https://github.com/arqex/react-datetime | ||
MIT: https://github.com/arqex/react-datetime/raw/master/LICENSE | ||
*/ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("React"),require("moment"),require("ReactDOM")):"function"==typeof define&&define.amd?define(["React","moment","ReactDOM"],e):"object"==typeof exports?exports.Datetime=e(require("React"),require("moment"),require("ReactDOM")):t.Datetime=e(t.React,t.moment,t.ReactDOM)}(this,function(t,e,s){return function(t){function e(a){if(s[a])return s[a].exports;var r=s[a]={exports:{},id:a,loaded:!1};return t[a].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";var a=s(1),r=s(2),n=s(3),i=s(5),o=s(6),c=s(7),p=s(4),d=r.PropTypes,u=r.createClass({mixins:[s(8)],viewComponents:{days:n,months:i,years:o,time:c},propTypes:{closeOnSelect:d.bool,onFocus:d.func,onBlur:d.func,onChange:d.func,locale:d.string,input:d.bool,inputProps:d.object,viewMode:d.oneOf(["years","months","days","time"]),isValidDate:d.func,open:d.bool,strictParsing:d.bool},getDefaultProps:function(){var t=function(){};return{className:"",defaultValue:"",inputProps:{},input:!0,onFocus:t,onBlur:t,onChange:t,timeFormat:!0,dateFormat:!0,strictParsing:!0}},getInitialState:function(){var t=this.getStateFromProps(this.props);return void 0==t.open&&(t.open=!this.props.input),t.currentView=this.props.dateFormat?this.props.viewMode||t.updateOn||"days":"time",t},getStateFromProps:function(t){var e,s,a,r=this.getFormats(t),n=t.value||t.defaultValue;return n&&"string"==typeof n?e=this.localMoment(n,r.datetime):n&&(e=this.localMoment(n)),e&&!e.isValid()&&(e=null),s=e?e.clone().startOf("month"):this.localMoment().startOf("month"),a=this.getUpdateOn(r),{updateOn:a,inputFormat:r.datetime,viewDate:s,selectedDate:e,inputValue:e?e.format(r.datetime):n||"",open:t.open}},getUpdateOn:function(t){return t.date.match(/[lLD]/)?"days":-1!=t.date.indexOf("M")?"months":-1!=t.date.indexOf("Y")?"years":"days"},getFormats:function(t){var e={date:t.dateFormat||"",time:t.timeFormat||""},s=this.localMoment(t.date).localeData();return e.date===!0?e.date=s.longDateFormat("L"):"days"!==this.getUpdateOn(e)&&(e.time=""),e.time===!0&&(e.time=s.longDateFormat("LT")),e.datetime=e.date&&e.time?e.date+" "+e.time:e.date||e.time,e},componentWillReceiveProps:function(t){var e=this.getFormats(t),s={};t.value!=this.props.value&&(s=this.getStateFromProps(t)),e.datetime!==this.getFormats(this.props).datetime&&(s.inputFormat=e.datetime),void 0===s.open&&(this.props.closeOnSelect&&"time"!==this.state.currentView?s.open=!1:s.open=this.state.open),this.setState(s)},onInputChange:function(t){var e=null==t.target?t:t.target.value,s=this.localMoment(e,this.state.inputFormat),a={inputValue:e};return s.isValid()&&!this.props.value?(a.selectedDate=s,a.viewDate=s.clone().startOf("month")):a.selectedDate=null,this.setState(a,function(){return this.props.onChange(s.isValid()?s:this.state.inputValue)})},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(a){e.setState({viewDate:e.state.viewDate.clone()[t](parseInt(a.target.getAttribute("data-value"))).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,a){var r=this;return function(){var n={},i=a?"selectedDate":"viewDate";n[i]=r.state[i].clone()[t](e,s),r.setState(n)}},allowedSetTime:["hours","minutes","seconds","milliseconds"],setTime:function(t,e){var s,a=this.allowedSetTime.indexOf(t)+1,r=this.state,n=(r.selectedDate||r.viewDate).clone();for(n[t](e);a<this.allowedSetTime.length;a++)s=this.allowedSetTime[a],n[s](n[s]());this.props.value||this.setState({selectedDate:n,inputValue:n.format(r.inputFormat)}),this.props.onChange(n)},updateSelectedDate:function(t,e){var s,a=t.target,r=0,n=this.state.viewDate,i=this.state.selectedDate||n;-1!=a.className.indexOf("rdtDay")?(-1!=a.className.indexOf("rdtNew")?r=1:-1!=a.className.indexOf("rdtOld")&&(r=-1),s=n.clone().month(n.month()+r).date(parseInt(a.getAttribute("data-value")))):-1!=a.className.indexOf("rdtMonth")?s=n.clone().month(parseInt(a.getAttribute("data-value"))).date(i.date()):-1!=a.className.indexOf("rdtYear")&&(s=n.clone().month(i.month()).date(i.date()).year(parseInt(a.getAttribute("data-value")))),s.hours(i.hours()).minutes(i.minutes()).seconds(i.seconds()).milliseconds(i.milliseconds()),this.props.value?this.props.closeOnSelect&&e&&this.closeCalendar():this.setState({selectedDate:s,viewDate:s.clone().startOf("month"),inputValue:s.format(this.state.inputFormat),open:!(this.props.closeOnSelect&&e)}),this.props.onChange(s)},openCalendar:function(){this.state.open||(this.props.onFocus(),this.setState({open:!0}))},closeCalendar:function(){this.setState({open:!1}),this.props.onBlur(this.state.selectedDate||this.state.inputValue)},handleClickOutside:function(){this.props.input&&this.state.open&&!this.props.open&&(this.setState({open:!1}),this.props.onBlur(this.state.selectedDate||this.state.inputValue))},localMoment:function(t,e){var s=p(t,e,this.props.strictParsing);return this.props.locale&&s.locale(this.props.locale),s},componentProps:{fromProps:["value","isValidDate","renderDay","renderMonth","renderYear"],fromState:["viewDate","selectedDate","updateOn"],fromThis:["setDate","setTime","showView","addTime","subtractTime","updateSelectedDate","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=r.DOM,s="rdt "+this.props.className,n=[];return this.props.input?n=[e.input(a({key:"i",type:"text",className:"form-control",onFocus:this.openCalendar,onChange:this.onInputChange,value:this.state.inputValue},this.props.inputProps))]:s+=" rdtStatic",this.state.open&&(s+=" rdtOpen"),e.div({className:s},n.concat(e.div({key:"dt",className:"rdtPicker"},r.createElement(t,this.getComponentProps()))))}});u.moment=p,t.exports=u},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 a(t){var e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(t))),e.filter(function(e){return r.call(t,e)})}var r=Object.prototype.propertyIsEnumerable;t.exports=Object.assign||function(t,e){for(var r,n,i=s(t),o=1;o<arguments.length;o++){r=arguments[o],n=a(Object(r));for(var c=0;c<n.length;c++)i[n[c]]=r[n[c]]}return i}},function(e,s){e.exports=t},function(t,e,s){var a=s(2),r=s(4),n=a.DOM,i=a.createClass({render:function(){var t,e=this.renderFooter(),s=this.props.viewDate,a=s.localeData();return t=[n.thead({key:"th"},[n.tr({key:"h"},[n.th({key:"p",className:"rdtPrev"},n.span({onClick:this.props.subtractTime(1,"months")},"‹")),n.th({key:"s",className:"rdtSwitch",onClick:this.props.showView("months"),colSpan:5,"data-value":this.props.viewDate.month()},a.months(s)+" "+s.year()),n.th({key:"n",className:"rdtNext"},n.span({onClick:this.props.addTime(1,"months")},"›"))]),n.tr({key:"d"},this.getDaysOfWeek(a).map(function(t,e){return n.th({key:t+e,className:"dow"},t)}))]),n.tbody({key:"tb"},this.renderDays())],e&&t.push(e),n.div({className:"rdtDays"},n.table({},t))},getDaysOfWeek:function(t){var e=t._weekdaysMin,s=t.firstDayOfWeek(),a=[],r=0;return e.forEach(function(t){a[(7+r++-s)%7]=t}),a},renderDays:function(){var t,e,s,a,i=this.props.viewDate,o=this.props.selectedDate&&this.props.selectedDate.clone(),c=i.clone().subtract(1,"months"),p=i.year(),d=i.month(),u=[],l=[],h=this.props.renderDay||this.renderDay,m=this.props.isValidDate||this.isValidDate;c.date(c.daysInMonth()).startOf("week");for(var f=c.clone().add(42,"d");c.isBefore(f);)t="rdtDay",a=c.clone(),c.year()==p&&c.month()<d||c.year()<p?t+=" rdtOld":(c.year()==p&&c.month()>d||c.year()>p)&&(t+=" rdtNew"),o&&c.isSame(o,"day")&&(t+=" rdtActive"),c.isSame(r(),"day")&&(t+=" rdtToday"),e=!m(a,o),e&&(t+=" rdtDisabled"),s={key:c.format("M_D"),"data-value":c.date(),className:t},e||(s.onClick=this.updateSelectedDate),l.push(h(s,a,o)),7==l.length&&(u.push(n.tr({key:c.format("M_D")},l)),l=[]),c.add(1,"d");return u},updateSelectedDate:function(t){this.props.updateSelectedDate(t,!0)},renderDay:function(t,e,s){return n.td(t,e.date())},renderFooter:function(){if(!this.props.timeFormat)return"";var t=this.props.selectedDate||this.props.viewDate;return n.tfoot({key:"tf"},n.tr({},n.td({onClick:this.props.showView("time"),colSpan:7,className:"rdtTimeToggle"},t.format(this.props.timeFormat))))},isValidDate:function(){return 1}});t.exports=i},function(t,s){t.exports=e},function(t,e,s){"use strict";function a(t){return t.charAt(0).toUpperCase()+t.slice(1)}var r=s(2),n=(s(4),r.DOM),i=r.createClass({render:function(){return n.div({className:"rdtMonths"},[n.table({key:"a"},n.thead({},n.tr({},[n.th({key:"prev",className:"rdtPrev"},n.span({onClick:this.props.subtractTime(1,"years")},"‹")),n.th({key:"year",className:"rdtSwitch",onClick:this.props.showView("years"),colSpan:2,"data-value":this.props.viewDate.year()},this.props.viewDate.year()),n.th({key:"next",className:"rdtNext"},n.span({onClick:this.props.addTime(1,"years")},"›"))]))),n.table({key:"months"},n.tbody({key:"b"},this.renderMonths()))])},renderMonths:function(){for(var t,e,s=this.props.selectedDate,a=this.props.viewDate.month(),r=this.props.viewDate.year(),i=[],o=0,c=[],p=this.props.renderMonth||this.renderMonth;12>o;)t="rdtMonth",s&&o===a&&r===s.year()&&(t+=" rdtActive"),e={key:o,"data-value":o,className:t,onClick:"months"==this.props.updateOn?this.updateSelectedMonth:this.props.setDate("month")},c.push(p(e,o,r,s&&s.clone())),4==c.length&&(i.push(n.tr({key:a+"_"+i.length},c)),c=[]),o++;return i},updateSelectedMonth:function(t){this.props.updateSelectedDate(t,!0)},renderMonth:function(t,e,s,r){var i=this.props.viewDate.localeData()._monthsShort;return n.td(t,i.standalone?a(i.standalone[e]):i[e])}});t.exports=i},function(t,e,s){"use strict";var a=s(2),r=a.DOM,n=a.createClass({render:function(){var t=10*parseInt(this.props.viewDate.year()/10,10);return r.div({className:"rdtYears"},[r.table({key:"a"},r.thead({},r.tr({},[r.th({key:"prev",className:"rdtPrev"},r.span({onClick:this.props.subtractTime(10,"years")},"‹")),r.th({key:"year",className:"rdtSwitch",onClick:this.props.showView("years"),colSpan:2},t+"-"+(t+9)),r.th({key:"next",className:"rdtNext"},r.span({onClick:this.props.addTime(10,"years")},"›"))]))),r.table({key:"years"},r.tbody({},this.renderYears(t)))])},renderYears:function(t){var e,s,a=[],n=-1,i=[],o=this.props.renderYear||this.renderYear,c=this.props.selectedDate;for(t--;11>n;)e="rdtYear",-1===n|10===n&&(e+=" rdtOld"),c&&c.year()===t&&(e+=" rdtActive"),s={key:t,"data-value":t,className:e,onClick:"years"==this.props.updateOn?this.updateSelectedYear:this.props.setDate("year")},a.push(o(s,t,c&&c.clone())),4==a.length&&(i.push(r.tr({key:n},a)),a=[]),t++,n++;return i},updateSelectedYear:function(t){this.props.updateSelectedDate(t,!0)},renderYear:function(t,e,s){return r.td(t,e)}});t.exports=n},function(t,e,s){"use strict";var a=s(2),r=a.DOM,n=a.createClass({getInitialState:function(){return this.calculateState(this.props)},calculateState:function(t){var e=t.selectedDate||t.viewDate,s=t.timeFormat,a=[];(-1!=s.indexOf("H")||-1!=s.indexOf("h"))&&(a.push("hours"),-1!=s.indexOf("m")&&(a.push("minutes"),-1!=s.indexOf("s")&&a.push("seconds")));var r=!1;return-1!=this.props.timeFormat.indexOf(" A")&&null!=this.state&&(r=this.state.hours>=12?"PM":"AM"),{hours:e.format("H"),minutes:e.format("mm"),seconds:e.format("ss"),milliseconds:e.format("SSS"),daypart:r,counters:a}},renderCounter:function(t){if("daypart"!==t){var e=this.state[t];return"hours"===t&&-1!=this.props.timeFormat.indexOf(" A")&&e>12&&(e>12&&(e-=12),0==e&&(e=12)),r.div({key:t,className:"rdtCounter"},[r.span({key:"up",className:"rdtBtn",onMouseDown:this.onStartClicking("increase",t)},"▲"),r.div({key:"c",className:"rdtCount"},e),r.span({key:"do",className:"rdtBtn",onMouseDown:this.onStartClicking("decrease",t)},"▼")])}return""},render:function(){var t=this,e=[];return this.state.counters.forEach(function(s){e.length&&e.push(r.div({key:"sep"+e.length,className:"rdtCounterSeparator"},":")),e.push(t.renderCounter(s))}),this.state.daypart!==!1&&e.push(r.div({key:this.state.daypart,className:"rdtDayPart"},this.state.daypart)),3==this.state.counters.length&&-1!=this.props.timeFormat.indexOf("S")&&(e.push(r.div({className:"rdtCounterSeparator",key:"sep5"},":")),e.push(r.div({className:"rdtCounter rdtMilli",key:"m"},r.input({value:this.state.milliseconds,type:"text",onChange:this.updateMilli})))),r.div({className:"rdtTime"},r.table({},[this.renderHeader(),r.tbody({key:"b"},r.tr({},r.td({},r.div({className:"rdtCounters"},e))))]))},componentWillReceiveProps:function(t,e){this.setState(this.calculateState(t))},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(){if(!this.props.dateFormat)return null;var t=this.props.selectedDate||this.props.viewDate;return r.thead({key:"h"},r.tr({},r.th({className:"rdtSwitch",colSpan:4,onClick:this.props.showView("days")},t.format(this.props.dateFormat))))},onStartClicking:function(t,e){var s=this;this.state[e];return function(){var a={};a[e]=s[t](e),s.setState(a),s.timer=setTimeout(function(){s.increaseTimer=setInterval(function(){a[e]=s[t](e),s.setState(a)},70)},500),s.mouseUpListener=function(){clearTimeout(s.timer),clearInterval(s.increaseTimer),s.props.setTime(e,s.state[e]),document.body.removeEventListener("mouseup",s.mouseUpListener)},document.body.addEventListener("mouseup",s.mouseUpListener)}},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=n},function(t,e,s){var a=s(2),r=a.version&&a.version.split(".");r&&(r[0]>0||r[1]>13)&&(a=s(9));var n=[],i=[],o="ignore-react-onclickoutside",c=function(t,e){return t===e?!0:t.correspondingElement?t.correspondingElement.classList.contains(o):t.classList.contains(o)};t.exports={componentDidMount:function(){if("function"!=typeof this.handleClickOutside)throw new Error("Component lacks a handleClickOutside(event) function for processing outside click events.");var t=this.__outsideClickHandler=function(t,e){return function(s){s.stopPropagation();for(var a=s.target,r=!1;a.parentNode;){if(r=c(a,t))return;a=a.parentNode}e(s)}}(a.findDOMNode(this),this.handleClickOutside),e=n.length;n.push(this),i[e]=t,this.props.disableOnClickOutside||this.enableOnClickOutside()},componentWillUnmount:function(){this.disableOnClickOutside(),this.__outsideClickHandler=!1;var t=n.indexOf(this);t>-1&&i[t]&&(i.splice(t,1),n.splice(t,1))},enableOnClickOutside:function(){var t=this.__outsideClickHandler;document.addEventListener("mousedown",t),document.addEventListener("touchstart",t)},disableOnClickOutside:function(){var t=this.__outsideClickHandler;document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t)}}},function(t,e){t.exports=s}])}); | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("React"),require("moment"),require("ReactDOM")):"function"==typeof define&&define.amd?define(["React","moment","ReactDOM"],e):"object"==typeof exports?exports.Datetime=e(require("React"),require("moment"),require("ReactDOM")):t.Datetime=e(t.React,t.moment,t.ReactDOM)}(this,function(t,e,s){return function(t){function e(a){if(s[a])return s[a].exports;var n=s[a]={exports:{},id:a,loaded:!1};return t[a].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";var a=s(1),n=s(2),r=s(3),i=s(5),o=s(6),c=s(7),p=s(4),u=n.PropTypes,d=n.createClass({mixins:[s(8)],viewComponents:{days:r,months:i,years:o,time:c},propTypes:{onFocus:u.func,onBlur:u.func,onChange:u.func,locale:u.string,input:u.bool,inputProps:u.object,viewMode:u.oneOf(["years","months","days","time"]),isValidDate:u.func,open:u.bool,strictParsing:u.bool,closeOnSelect:u.bool,closeOnTab:u.bool},getDefaultProps:function(){var t=function(){};return{className:"",defaultValue:"",inputProps:{},input:!0,onFocus:t,onBlur:t,onChange:t,timeFormat:!0,dateFormat:!0,strictParsing:!0,closeOnSelect:!1,closeOnTab:!0}},getInitialState:function(){var t=this.getStateFromProps(this.props);return void 0===t.open&&(t.open=!this.props.input),t.currentView=this.props.dateFormat?this.props.viewMode||t.updateOn||"days":"time",t},getStateFromProps:function(t){var e,s,a,n=this.getFormats(t),r=t.value||t.defaultValue;return r&&"string"==typeof r?e=this.localMoment(r,n.datetime):r&&(e=this.localMoment(r)),e&&!e.isValid()&&(e=null),s=e?e.clone().startOf("month"):this.localMoment().startOf("month"),a=this.getUpdateOn(n),{updateOn:a,inputFormat:n.datetime,viewDate:s,selectedDate:e,inputValue:e?e.format(n.datetime):r||"",open:t.open}},getUpdateOn:function(t){return t.date.match(/[lLD]/)?"days":-1!==t.date.indexOf("M")?"months":-1!==t.date.indexOf("Y")?"years":"days"},getFormats:function(t){var e={date:t.dateFormat||"",time:t.timeFormat||""},s=this.localMoment(t.date).localeData();return e.date===!0?e.date=s.longDateFormat("L"):"days"!==this.getUpdateOn(e)&&(e.time=""),e.time===!0&&(e.time=s.longDateFormat("LT")),e.datetime=e.date&&e.time?e.date+" "+e.time:e.date||e.time,e},componentWillReceiveProps:function(t){var e=this.getFormats(t),s={};t.value!==this.props.value&&(s=this.getStateFromProps(t)),e.datetime!==this.getFormats(this.props).datetime&&(s.inputFormat=e.datetime),void 0===s.open&&(this.props.closeOnSelect&&"time"!==this.state.currentView?s.open=!1:s.open=this.state.open),this.setState(s)},onInputChange:function(t){var e=null===t.target?t:t.target.value,s=this.localMoment(e,this.state.inputFormat),a={inputValue:e};return s.isValid()&&!this.props.value?(a.selectedDate=s,a.viewDate=s.clone().startOf("month")):a.selectedDate=null,this.setState(a,function(){return this.props.onChange(s.isValid()?s:this.state.inputValue)})},onInputKey:function(t){9===t.which&&this.props.closeOnTab&&this.closeCalendar()},showView:function(t){var e=this;return function(){e.setState({currentView:t})}},setDate:function(t){var e=this,s={month:"days",year:"months"};return function(a){e.setState({viewDate:e.state.viewDate.clone()[t](parseInt(a.target.getAttribute("data-value"),10)).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,a){var n=this;return function(){var r={},i=a?"selectedDate":"viewDate";r[i]=n.state[i].clone()[t](e,s),n.setState(r)}},allowedSetTime:["hours","minutes","seconds","milliseconds"],setTime:function(t,e){var s,a=this.allowedSetTime.indexOf(t)+1,n=this.state,r=(n.selectedDate||n.viewDate).clone();for(r[t](e);a<this.allowedSetTime.length;a++)s=this.allowedSetTime[a],r[s](r[s]());this.props.value||this.setState({selectedDate:r,inputValue:r.format(n.inputFormat)}),this.props.onChange(r)},updateSelectedDate:function(t,e){var s,a=t.target,n=0,r=this.state.viewDate,i=this.state.selectedDate||r;-1!==a.className.indexOf("rdtDay")?(-1!==a.className.indexOf("rdtNew")?n=1:-1!==a.className.indexOf("rdtOld")&&(n=-1),s=r.clone().month(r.month()+n).date(parseInt(a.getAttribute("data-value"),10))):-1!==a.className.indexOf("rdtMonth")?s=r.clone().month(parseInt(a.getAttribute("data-value"),10)).date(i.date()):-1!==a.className.indexOf("rdtYear")&&(s=r.clone().month(i.month()).date(i.date()).year(parseInt(a.getAttribute("data-value"),10))),s.hours(i.hours()).minutes(i.minutes()).seconds(i.seconds()).milliseconds(i.milliseconds()),this.props.value?this.props.closeOnSelect&&e&&this.closeCalendar():this.setState({selectedDate:s,viewDate:s.clone().startOf("month"),inputValue:s.format(this.state.inputFormat),open:!(this.props.closeOnSelect&&e)}),this.props.onChange(s)},openCalendar:function(){this.state.open||(this.props.onFocus(),this.setState({open:!0}))},closeCalendar:function(){this.setState({open:!1}),this.props.onBlur(this.state.selectedDate||this.state.inputValue)},handleClickOutside:function(){this.props.input&&this.state.open&&!this.props.open&&(this.setState({open:!1}),this.props.onBlur(this.state.selectedDate||this.state.inputValue))},localMoment:function(t,e){var s=p(t,e,this.props.strictParsing);return this.props.locale&&s.locale(this.props.locale),s},componentProps:{fromProps:["value","isValidDate","renderDay","renderMonth","renderYear"],fromState:["viewDate","selectedDate","updateOn"],fromThis:["setDate","setTime","showView","addTime","subtractTime","updateSelectedDate","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=n.DOM,s="rdt "+this.props.className,r=[];return this.props.input?r=[e.input(a({key:"i",type:"text",className:"form-control",onFocus:this.openCalendar,onChange:this.onInputChange,onKeyDown:this.onInputKey,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"},n.createElement(t,this.getComponentProps()))))}});d.moment=p,t.exports=d},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 a(t){var e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(t))),e.filter(function(e){return n.call(t,e)})}var n=Object.prototype.propertyIsEnumerable;t.exports=Object.assign||function(t,e){for(var n,r,i=s(t),o=1;o<arguments.length;o++){n=arguments[o],r=a(Object(n));for(var c=0;c<r.length;c++)i[r[c]]=n[r[c]]}return i}},function(e,s){e.exports=t},function(t,e,s){"use strict";var a=s(2),n=s(4),r=a.DOM,i=a.createClass({render:function(){var t,e=this.renderFooter(),s=this.props.viewDate,a=s.localeData();return t=[r.thead({key:"th"},[r.tr({key:"h"},[r.th({key:"p",className:"rdtPrev"},r.span({onClick:this.props.subtractTime(1,"months")},"‹")),r.th({key:"s",className:"rdtSwitch",onClick:this.props.showView("months"),colSpan:5,"data-value":this.props.viewDate.month()},a.months(s)+" "+s.year()),r.th({key:"n",className:"rdtNext"},r.span({onClick:this.props.addTime(1,"months")},"›"))]),r.tr({key:"d"},this.getDaysOfWeek(a).map(function(t,e){return r.th({key:t+e,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(),a=[],n=0;return e.forEach(function(t){a[(7+n++-s)%7]=t}),a},renderDays:function(){var t,e,s,a,i=this.props.viewDate,o=this.props.selectedDate&&this.props.selectedDate.clone(),c=i.clone().subtract(1,"months"),p=i.year(),u=i.month(),d=[],l=[],h=this.props.renderDay||this.renderDay,m=this.props.isValidDate||this.isValidDate;c.date(c.daysInMonth()).startOf("week");for(var f=c.clone().add(42,"d");c.isBefore(f);)t="rdtDay",a=c.clone(),c.year()===p&&c.month()<u||c.year()<p?t+=" rdtOld":(c.year()===p&&c.month()>u||c.year()>p)&&(t+=" rdtNew"),o&&c.isSame(o,"day")&&(t+=" rdtActive"),c.isSame(n(),"day")&&(t+=" rdtToday"),e=!m(a,o),e&&(t+=" rdtDisabled"),s={key:c.format("M_D"),"data-value":c.date(),className:t},e||(s.onClick=this.updateSelectedDate),l.push(h(s,a,o)),7===l.length&&(d.push(r.tr({key:c.format("M_D")},l)),l=[]),c.add(1,"d");return d},updateSelectedDate:function(t){this.props.updateSelectedDate(t,!0)},renderDay:function(t,e){return r.td(t,e.date())},renderFooter:function(){if(!this.props.timeFormat)return"";var t=this.props.selectedDate||this.props.viewDate;return r.tfoot({key:"tf"},r.tr({},r.td({onClick:this.props.showView("time"),colSpan:7,className:"rdtTimeToggle"},t.format(this.props.timeFormat))))},isValidDate:function(){return 1}});t.exports=i},function(t,s){t.exports=e},function(t,e,s){"use strict";function a(t){return t.charAt(0).toUpperCase()+t.slice(1)}var n=s(2),r=n.DOM,i=n.createClass({render:function(){return r.div({className:"rdtMonths"},[r.table({key:"a"},r.thead({},r.tr({},[r.th({key:"prev",className:"rdtPrev"},r.span({onClick:this.props.subtractTime(1,"years")},"‹")),r.th({key:"year",className:"rdtSwitch",onClick:this.props.showView("years"),colSpan:2,"data-value":this.props.viewDate.year()},this.props.viewDate.year()),r.th({key:"next",className:"rdtNext"},r.span({onClick:this.props.addTime(1,"years")},"›"))]))),r.table({key:"months"},r.tbody({key:"b"},this.renderMonths()))])},renderMonths:function(){for(var t,e,s=this.props.selectedDate,a=this.props.viewDate.month(),n=this.props.viewDate.year(),i=[],o=0,c=[],p=this.props.renderMonth||this.renderMonth;12>o;)t="rdtMonth",s&&o===a&&n===s.year()&&(t+=" rdtActive"),e={key:o,"data-value":o,className:t,onClick:"months"===this.props.updateOn?this.updateSelectedMonth:this.props.setDate("month")},c.push(p(e,o,n,s&&s.clone())),4===c.length&&(i.push(r.tr({key:a+"_"+i.length},c)),c=[]),o++;return i},updateSelectedMonth:function(t){this.props.updateSelectedDate(t,!0)},renderMonth:function(t,e){var s=this.props.viewDate.localeData()._monthsShort;return r.td(t,s.standalone?a(s.standalone[e]):s[e])}});t.exports=i},function(t,e,s){"use strict";var a=s(2),n=a.DOM,r=a.createClass({render:function(){var t=10*parseInt(this.props.viewDate.year()/10,10);return n.div({className:"rdtYears"},[n.table({key:"a"},n.thead({},n.tr({},[n.th({key:"prev",className:"rdtPrev"},n.span({onClick:this.props.subtractTime(10,"years")},"‹")),n.th({key:"year",className:"rdtSwitch",onClick:this.props.showView("years"),colSpan:2},t+"-"+(t+9)),n.th({key:"next",className:"rdtNext"},n.span({onClick:this.props.addTime(10,"years")},"›"))]))),n.table({key:"years"},n.tbody({},this.renderYears(t)))])},renderYears:function(t){var e,s,a=[],r=-1,i=[],o=this.props.renderYear||this.renderYear,c=this.props.selectedDate;for(t--;11>r;)e="rdtYear",-1===r|10===r&&(e+=" rdtOld"),c&&c.year()===t&&(e+=" rdtActive"),s={key:t,"data-value":t,className:e,onClick:"years"===this.props.updateOn?this.updateSelectedYear:this.props.setDate("year")},a.push(o(s,t,c&&c.clone())),4===a.length&&(i.push(n.tr({key:r},a)),a=[]),t++,r++;return i},updateSelectedYear:function(t){this.props.updateSelectedDate(t,!0)},renderYear:function(t,e){return n.td(t,e)}});t.exports=r},function(t,e,s){"use strict";var a=s(2),n=a.DOM,r=a.createClass({getInitialState:function(){return this.calculateState(this.props)},calculateState:function(t){var e=t.selectedDate||t.viewDate,s=t.timeFormat,a=[];(-1!==s.indexOf("H")||-1!==s.indexOf("h"))&&(a.push("hours"),-1!==s.indexOf("m")&&(a.push("minutes"),-1!==s.indexOf("s")&&a.push("seconds")));var n=!1;return-1!==this.props.timeFormat.indexOf(" A")&&null!==this.state&&(n=this.state.hours>=12?"PM":"AM"),{hours:e.format("H"),minutes:e.format("mm"),seconds:e.format("ss"),milliseconds:e.format("SSS"),daypart:n,counters:a}},renderCounter:function(t){if("daypart"!==t){var e=this.state[t];return"hours"===t&&-1!==this.props.timeFormat.indexOf(" A")&&e>12&&(e>12&&(e-=12),0===e&&(e=12)),n.div({key:t,className:"rdtCounter"},[n.span({key:"up",className:"rdtBtn",onMouseDown:this.onStartClicking("increase",t)},"▲"),n.div({key:"c",className:"rdtCount"},e),n.span({key:"do",className:"rdtBtn",onMouseDown:this.onStartClicking("decrease",t)},"▼")])}return""},render:function(){var t=this,e=[];return this.state.counters.forEach(function(s){e.length&&e.push(n.div({key:"sep"+e.length,className:"rdtCounterSeparator"},":")),e.push(t.renderCounter(s))}),this.state.daypart!==!1&&e.push(n.div({key:this.state.daypart,className:"rdtDayPart"},this.state.daypart)),3===this.state.counters.length&&-1!==this.props.timeFormat.indexOf("S")&&(e.push(n.div({className:"rdtCounterSeparator",key:"sep5"},":")),e.push(n.div({className:"rdtCounter rdtMilli",key:"m"},n.input({value:this.state.milliseconds,type:"text",onChange:this.updateMilli})))),n.div({className:"rdtTime"},n.table({},[this.renderHeader(),n.tbody({key:"b"},n.tr({},n.td({},n.div({className:"rdtCounters"},e))))]))},componentWillReceiveProps:function(t){this.setState(this.calculateState(t))},updateMilli:function(t){var e=parseInt(t.target.value,10);e===t.target.value&&e>=0&&1e3>e&&(this.props.setTime("milliseconds",e),this.setState({milliseconds:e}))},renderHeader:function(){if(!this.props.dateFormat)return null;var t=this.props.selectedDate||this.props.viewDate;return n.thead({key:"h"},n.tr({},n.th({className:"rdtSwitch",colSpan:4,onClick:this.props.showView("days")},t.format(this.props.dateFormat))))},onStartClicking:function(t,e){var s=this;return function(){var a={};a[e]=s[t](e),s.setState(a),s.timer=setTimeout(function(){s.increaseTimer=setInterval(function(){a[e]=s[t](e),s.setState(a)},70)},500),s.mouseUpListener=function(){clearTimeout(s.timer),clearInterval(s.increaseTimer),s.props.setTime(e,s.state[e]),document.body.removeEventListener("mouseup",s.mouseUpListener)},document.body.addEventListener("mouseup",s.mouseUpListener)}},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],10)+1;return e>this.maxValues[t]&&(e=0),this.pad(t,e)},decrease:function(t){var e=parseInt(this.state[t],10)-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){"use strict";var a=s(2),n=a.version&&a.version.split(".");n&&(n[0]>0||n[1]>13)&&(a=s(9));var r=[],i=[],o="ignore-react-onclickoutside",c=function(t,e){return t===e?!0:t.correspondingElement?t.correspondingElement.classList.contains(o):t.classList.contains(o)};t.exports={componentDidMount:function(){if("function"!=typeof this.handleClickOutside)throw new Error("Component lacks a handleClickOutside(event) function for processing outside click events.");var t=this.__outsideClickHandler=function(t,e){return function(s){s.stopPropagation();for(var a=s.target,n=!1;a.parentNode;){if(n=c(a,t))return;a=a.parentNode}e(s)}}(a.findDOMNode(this),this.handleClickOutside),e=r.length;r.push(this),i[e]=t,this.props.disableOnClickOutside||this.enableOnClickOutside()},componentWillUnmount:function(){this.disableOnClickOutside(),this.__outsideClickHandler=!1;var t=r.indexOf(this);t>-1&&i[t]&&(i.splice(t,1),r.splice(t,1))},enableOnClickOutside:function(){var t=this.__outsideClickHandler;document.addEventListener("mousedown",t),document.addEventListener("touchstart",t)},disableOnClickOutside:function(){var t=this.__outsideClickHandler;document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t)}}},function(t,e){t.exports=s}])}); |
@@ -32,5 +32,6 @@ var gulp = require('gulp'), | ||
var handleError = function( err ){ | ||
console.log( 'ERRRRROOOOOORRRR', err ); | ||
var handleError = function( err ){ | ||
console.log( 'Error: ', err ); | ||
}; | ||
function wp( config, minify ){ | ||
@@ -47,8 +48,6 @@ var stream = gulp.src('./Datetime.js') | ||
.pipe( gulp.dest('dist/') ) | ||
; | ||
} | ||
gulp.task("build", function( callback ) { | ||
gulp.task( 'build', function( callback ) { | ||
var config = getWPConfig( 'react-datetime' ); | ||
@@ -55,0 +54,0 @@ config.devtool = '#eval'; |
{ | ||
"name": "react-datetime", | ||
"version": "2.3.3", | ||
"version": "2.4.0", | ||
"description": "A lightweight but complete datetime picker React.js component.", | ||
@@ -15,3 +15,4 @@ "homepage": "https://github.com/arqex/react-datetime", | ||
"test": "node node_modules/mocha/bin/mocha tests", | ||
"dev": "webpack-dev-server --config example/webpack.config.js --devtool eval --progress --colors --hot --content-base example" | ||
"dev": "webpack-dev-server --config example/webpack.config.js --devtool eval --progress --colors --hot --content-base example", | ||
"lint": "./node_modules/.bin/eslint src/ DateTime.js" | ||
}, | ||
@@ -34,2 +35,3 @@ "keywords": [ | ||
"devDependencies": { | ||
"eslint": "^3.1.0", | ||
"gulp": "^3.9.0", | ||
@@ -36,0 +38,0 @@ "gulp-insert": "^0.4.0", |
@@ -70,2 +70,3 @@ react-datetime | ||
| **closeOnSelect** | boolean | false | When `true`, once the day has been selected, the react-datetime will be automatically closed. | ||
| **closeOnTab** | boolean | true | When `true` and the input is focused, pressing the `tab` key will close the picker. | ||
@@ -144,4 +145,10 @@ ## i18n | ||
**Please use the linter before submitting your pull request.** | ||
``` | ||
npm run lint | ||
``` | ||
### [Changelog](CHANGELOG.md) | ||
### [MIT Licensed](LICENSE) |
@@ -0,1 +1,3 @@ | ||
'use strict'; | ||
var React = require('react'), | ||
@@ -17,3 +19,3 @@ moment = require('moment') | ||
DOM.thead({ key: 'th'}, [ | ||
DOM.tr({ key: 'h'},[ | ||
DOM.tr({ key: 'h'}, [ | ||
DOM.th({ key: 'p', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'months')}, '‹')), | ||
@@ -28,3 +30,3 @@ DOM.th({ key: 's', className: 'rdtSwitch', onClick: this.props.showView('months'), colSpan: 5, 'data-value': this.props.viewDate.month() }, locale.months( date ) + ' ' + date.year() ), | ||
if( footer ) | ||
if ( footer ) | ||
tableChildren.push( footer ); | ||
@@ -73,12 +75,12 @@ | ||
while( prevMonth.isBefore( lastDay ) ){ | ||
while ( prevMonth.isBefore( lastDay ) ){ | ||
classes = 'rdtDay'; | ||
currentDate = prevMonth.clone(); | ||
if( ( prevMonth.year() == currentYear && prevMonth.month() < currentMonth ) || ( prevMonth.year() < currentYear ) ) | ||
if ( ( prevMonth.year() === currentYear && prevMonth.month() < currentMonth ) || ( prevMonth.year() < currentYear ) ) | ||
classes += ' rdtOld'; | ||
else if( ( prevMonth.year() == currentYear && prevMonth.month() > currentMonth ) || ( prevMonth.year() > currentYear ) ) | ||
else if ( ( prevMonth.year() === currentYear && prevMonth.month() > currentMonth ) || ( prevMonth.year() > currentYear ) ) | ||
classes += ' rdtNew'; | ||
if( selected && prevMonth.isSame(selected, 'day') ) | ||
if ( selected && prevMonth.isSame(selected, 'day') ) | ||
classes += ' rdtActive'; | ||
@@ -90,3 +92,3 @@ | ||
disabled = !isValid( currentDate, selected ); | ||
if( disabled ) | ||
if ( disabled ) | ||
classes += ' rdtDisabled'; | ||
@@ -99,3 +101,3 @@ | ||
}; | ||
if( !disabled ) | ||
if ( !disabled ) | ||
dayProps.onClick = this.updateSelectedDate; | ||
@@ -105,3 +107,3 @@ | ||
if( days.length == 7 ){ | ||
if ( days.length === 7 ){ | ||
weeks.push( DOM.tr( {key: prevMonth.format('M_D')}, days ) ); | ||
@@ -121,3 +123,3 @@ days = []; | ||
renderDay: function( props, currentDate, selectedDate ){ | ||
renderDay: function( props, currentDate ){ | ||
return DOM.td( props, currentDate.date() ); | ||
@@ -127,3 +129,3 @@ }, | ||
renderFooter: function(){ | ||
if( !this.props.timeFormat ) | ||
if ( !this.props.timeFormat ) | ||
return ''; | ||
@@ -130,0 +132,0 @@ |
'use strict'; | ||
var React = require('react'), | ||
moment = require('moment') | ||
; | ||
var React = require('react'); | ||
@@ -10,4 +8,4 @@ var DOM = React.DOM; | ||
render: function() { | ||
return DOM.div({ className: 'rdtMonths' },[ | ||
DOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({},[ | ||
return DOM.div({ className: 'rdtMonths' }, [ | ||
DOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({}, [ | ||
DOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(1, 'years')}, '‹')), | ||
@@ -33,5 +31,5 @@ DOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2, 'data-value': this.props.viewDate.year()}, this.props.viewDate.year() ), | ||
while (i < 12) { | ||
classes = "rdtMonth"; | ||
if( date && i === month && year === date.year() ) | ||
classes += " rdtActive"; | ||
classes = 'rdtMonth'; | ||
if ( date && i === month && year === date.year() ) | ||
classes += ' rdtActive'; | ||
@@ -42,3 +40,3 @@ props = { | ||
className: classes, | ||
onClick: this.props.updateOn=="months"? this.updateSelectedMonth : this.props.setDate('month') | ||
onClick: this.props.updateOn === 'months'? this.updateSelectedMonth : this.props.setDate('month') | ||
}; | ||
@@ -48,3 +46,3 @@ | ||
if( months.length == 4 ){ | ||
if ( months.length === 4 ){ | ||
rows.push( DOM.tr({ key: month + '_' + rows.length }, months) ); | ||
@@ -64,8 +62,8 @@ months = []; | ||
renderMonth: function( props, month, year, selectedDate ) { | ||
var monthsShort = this.props.viewDate.localeData()._monthsShort | ||
renderMonth: function( props, month ) { | ||
var monthsShort = this.props.viewDate.localeData()._monthsShort; | ||
return DOM.td( props, monthsShort.standalone | ||
? capitalize( monthsShort.standalone[ month ] ) | ||
: monthsShort[ month ] | ||
) | ||
); | ||
} | ||
@@ -75,5 +73,5 @@ }); | ||
function capitalize(str) { | ||
return str.charAt(0).toUpperCase() + str.slice(1) | ||
return str.charAt(0).toUpperCase() + str.slice(1); | ||
} | ||
module.exports = DateTimePickerMonths; |
@@ -0,1 +1,3 @@ | ||
'use strict'; | ||
// This is extracted from https://github.com/Pomax/react-onclickoutside | ||
@@ -8,3 +10,3 @@ // And modified to support react 0.13 and react 0.14 | ||
if( version && ( version[0] > 0 || version[1] > 13 ) ) | ||
if ( version && ( version[0] > 0 || version[1] > 13 ) ) | ||
React = require('react-dom'); | ||
@@ -37,4 +39,4 @@ | ||
componentDidMount: function() { | ||
if(typeof this.handleClickOutside !== "function") | ||
throw new Error("Component lacks a handleClickOutside(event) function for processing outside click events."); | ||
if (typeof this.handleClickOutside !== 'function') | ||
throw new Error('Component lacks a handleClickOutside(event) function for processing outside click events.'); | ||
@@ -51,9 +53,9 @@ var fn = this.__outsideClickHandler = (function(localNode, eventHandler) { | ||
// to React's "you shouldn't care about the DOM" philosophy. | ||
while(source.parentNode) { | ||
while (source.parentNode) { | ||
found = isSourceFound(source, localNode); | ||
if(found) return; | ||
if (found) return; | ||
source = source.parentNode; | ||
} | ||
eventHandler(evt); | ||
} | ||
}; | ||
}(React.findDOMNode(this), this.handleClickOutside)); | ||
@@ -76,3 +78,3 @@ | ||
var pos = registeredComponents.indexOf(this); | ||
if( pos>-1) { | ||
if ( pos>-1) { | ||
if (handlers[pos]) { | ||
@@ -92,4 +94,4 @@ // clean up so we don't leak memory | ||
var fn = this.__outsideClickHandler; | ||
document.addEventListener("mousedown", fn); | ||
document.addEventListener("touchstart", fn); | ||
document.addEventListener('mousedown', fn); | ||
document.addEventListener('touchstart', fn); | ||
}, | ||
@@ -103,5 +105,5 @@ | ||
var fn = this.__outsideClickHandler; | ||
document.removeEventListener("mousedown", fn); | ||
document.removeEventListener("touchstart", fn); | ||
document.removeEventListener('mousedown', fn); | ||
document.removeEventListener('touchstart', fn); | ||
} | ||
}; |
@@ -16,7 +16,7 @@ 'use strict'; | ||
if( format.indexOf('H') != -1 || format.indexOf('h') != -1 ){ | ||
if ( format.indexOf('H') !== -1 || format.indexOf('h') !== -1 ){ | ||
counters.push('hours'); | ||
if( format.indexOf('m') != -1 ){ | ||
if ( format.indexOf('m') !== -1 ){ | ||
counters.push('minutes'); | ||
if( format.indexOf('s') != -1 ){ | ||
if ( format.indexOf('s') !== -1 ){ | ||
counters.push('seconds'); | ||
@@ -28,3 +28,3 @@ } | ||
var daypart = false; | ||
if( this.props.timeFormat.indexOf(' A') != -1 && this.state != null ){ | ||
if ( this.props.timeFormat.indexOf(' A') !== -1 && this.state !== null ){ | ||
daypart = ( this.state.hours >= 12 ) ? 'PM' : 'AM'; | ||
@@ -45,7 +45,7 @@ } | ||
var value = this.state[ type ]; | ||
if (type === 'hours' && this.props.timeFormat.indexOf(' A') != -1 && value > 12) { | ||
if(value > 12){ | ||
if (type === 'hours' && this.props.timeFormat.indexOf(' A') !== -1 && value > 12) { | ||
if (value > 12){ | ||
value = value - 12; | ||
} | ||
if(value == 0) { | ||
if (value === 0) { | ||
value = 12; | ||
@@ -68,3 +68,3 @@ } | ||
this.state.counters.forEach( function(c){ | ||
if( counters.length ) | ||
if ( counters.length ) | ||
counters.push( DOM.div( {key: 'sep' + counters.length, className: 'rdtCounterSeparator' }, ':' )); | ||
@@ -74,3 +74,2 @@ counters.push( me.renderCounter( c ) ); | ||
if (this.state.daypart !== false) { | ||
@@ -80,3 +79,3 @@ counters.push(DOM.div({ key: this.state.daypart, className: 'rdtDayPart'}, this.state.daypart )); | ||
if( this.state.counters.length == 3 && this.props.timeFormat.indexOf('S') != -1 ){ | ||
if ( this.state.counters.length === 3 && this.props.timeFormat.indexOf('S') !== -1 ){ | ||
counters.push( DOM.div( {className: 'rdtCounterSeparator', key: 'sep5' }, ':' )); | ||
@@ -99,8 +98,8 @@ counters.push( | ||
}, | ||
componentWillReceiveProps: function( nextProps, nextState ){ | ||
componentWillReceiveProps: function( nextProps ){ | ||
this.setState( this.calculateState( nextProps ) ); | ||
}, | ||
updateMilli: function( e ){ | ||
var milli = parseInt( e.target.value ); | ||
if( milli == e.target.value && milli >= 0 && milli < 1000 ){ | ||
var milli = parseInt( e.target.value, 10 ); | ||
if ( milli === e.target.value && milli >= 0 && milli < 1000 ){ | ||
this.props.setTime( 'milliseconds', milli ); | ||
@@ -111,3 +110,3 @@ this.setState({ milliseconds: milli }); | ||
renderHeader: function(){ | ||
if( !this.props.dateFormat ) | ||
if ( !this.props.dateFormat ) | ||
return null; | ||
@@ -121,8 +120,4 @@ | ||
onStartClicking: function( action, type ){ | ||
var me = this, | ||
update = {}, | ||
value = this.state[ type ] | ||
; | ||
var me = this; | ||
return function(){ | ||
@@ -137,3 +132,3 @@ var update = {}; | ||
me.setState( update ); | ||
},70); | ||
}, 70); | ||
}, 500); | ||
@@ -165,4 +160,4 @@ | ||
increase: function( type ){ | ||
var value = parseInt(this.state[ type ]) + 1; | ||
if( value > this.maxValues[ type ] ) | ||
var value = parseInt(this.state[ type ], 10) + 1; | ||
if ( value > this.maxValues[ type ] ) | ||
value = 0; | ||
@@ -172,4 +167,4 @@ return this.pad( type, value ); | ||
decrease: function( type ){ | ||
var value = parseInt(this.state[ type ]) - 1; | ||
if( value < 0 ) | ||
var value = parseInt(this.state[ type ], 10) - 1; | ||
if ( value < 0 ) | ||
value = this.maxValues[ type ]; | ||
@@ -180,3 +175,3 @@ return this.pad( type, value ); | ||
var str = value + ''; | ||
while( str.length < this.padValues[ type ] ) | ||
while ( str.length < this.padValues[ type ] ) | ||
str = '0' + str; | ||
@@ -183,0 +178,0 @@ return str; |
@@ -10,4 +10,4 @@ 'use strict'; | ||
return DOM.div({ className: 'rdtYears' },[ | ||
DOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({},[ | ||
return DOM.div({ className: 'rdtYears' }, [ | ||
DOM.table({ key: 'a'}, DOM.thead({}, DOM.tr({}, [ | ||
DOM.th({ key: 'prev', className: 'rdtPrev' }, DOM.span({onClick: this.props.subtractTime(10, 'years')}, '‹')), | ||
@@ -33,5 +33,5 @@ DOM.th({ key: 'year', className: 'rdtSwitch', onClick: this.props.showView('years'), colSpan: 2 }, year + '-' + (year + 9) ), | ||
classes = 'rdtYear'; | ||
if( i === -1 | i === 10 ) | ||
if ( i === -1 | i === 10 ) | ||
classes += ' rdtOld'; | ||
if( selectedDate && selectedDate.year() === year ) | ||
if ( selectedDate && selectedDate.year() === year ) | ||
classes += ' rdtActive'; | ||
@@ -43,3 +43,3 @@ | ||
className: classes, | ||
onClick: this.props.updateOn=="years" ? this.updateSelectedYear : this.props.setDate('year') | ||
onClick: this.props.updateOn === 'years' ? this.updateSelectedYear : this.props.setDate('year') | ||
}; | ||
@@ -49,3 +49,3 @@ | ||
if( years.length == 4 ){ | ||
if ( years.length === 4 ){ | ||
rows.push( DOM.tr({ key: i }, years ) ); | ||
@@ -66,3 +66,3 @@ years = []; | ||
renderYear: function( props, year, selectedDate ){ | ||
renderYear: function( props, year ){ | ||
return DOM.td( props, year ); | ||
@@ -69,0 +69,0 @@ } |
@@ -480,2 +480,24 @@ // Create the dom before requiring react | ||
it( 'closeOnTab:true', function(){ | ||
createDatetime({ value: date }); | ||
assert.equal( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
ev.focus( dt.input() ); | ||
assert.notEqual( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
TestUtils.Simulate.keyDown(dt.input(), {key: "Tab", keyCode: 9, which: 9}); | ||
assert.equal( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
trigger( 'click', document.body ); | ||
}); | ||
it( 'closeOnTab:false', function(){ | ||
createDatetime({ value: date, closeOnTab: false }); | ||
assert.equal( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
ev.focus( dt.input() ); | ||
assert.notEqual( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
TestUtils.Simulate.keyDown(dt.input(), {key: "Tab", keyCode: 9, which: 9}); | ||
assert.notEqual( dt.dt().className.indexOf( 'rdtOpen' ), -1 ); | ||
trigger( 'click', document.body ); | ||
}); | ||
it( 'increase time', function( done ){ | ||
@@ -482,0 +504,0 @@ var i = 0; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
123235
23
2126
153
12