ldx-widgets
Version:
widgets
78 lines (69 loc) • 2.27 kB
JavaScript
(function() {
var DatePicker, React, ReactDatepicker, _, div, moment, ref, span;
React = require('react');
ReactDatepicker = React.createFactory(require('react-datepicker'));
moment = require('moment');
_ = require('lodash');
ref = React.DOM, div = ref.div, span = ref.span;
DatePicker = React.createClass({
displayName: 'DatePicker',
propTypes: {
placeholderText: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.number]),
dateFormat: React.PropTypes.string,
className: React.PropTypes.string,
minDate: React.PropTypes.object,
maxDate: React.PropTypes.object,
onChange: React.PropTypes.func.isRequired,
tabIndex: React.PropTypes.number,
selected: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.object])
},
getDefaultProps: function() {
return {
placeholderText: 'Select a date',
dateFormat: 'MM/DD/YYYY',
className: null,
includeTime: false,
returnDateString: null,
onChange: function() {}
};
},
getInitialState: function() {
return {
selected: this.props.selected || moment()
};
},
render: function() {
var mainClass, props;
props = _.clone(this.props);
props.onChange = this.handleDateChange;
mainClass = 'datepicker-wrapper';
if (typeof className !== "undefined" && className !== null) {
mainClass += " " + className;
}
return div({
className: mainClass
}, ReactDatepicker(props));
},
handleDateChange: function(date) {
return this.setState({
selected: date
}, (function(_this) {
return function() {
var base;
return typeof (base = _this.props).onChange === "function" ? base.onChange(date) : void 0;
};
})(this));
},
getValue: function() {
var returnDateString, selected;
returnDateString = this.props.returnDateString;
selected = this.state.selected;
if ((returnDateString != null) && (selected != null)) {
return selected.format(returnDateString);
} else {
return selected || moment();
}
}
});
module.exports = DatePicker;
}).call(this);