ldx-widgets
Version:
widgets
107 lines (96 loc) • 3.31 kB
JavaScript
(function() {
var DatePicker, PropTypes, React, ReactDatepicker, _, createClass, div, moment, ref, span;
React = require('react');
createClass = require('create-react-class');
PropTypes = require('prop-types');
ReactDatepicker = React.createFactory(require('react-datepicker')["default"]);
moment = require('moment');
_ = require('lodash');
ref = React.DOM, div = ref.div, span = ref.span;
DatePicker = createClass({
displayName: 'DatePicker',
propTypes: {
placeholderText: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
dateFormat: PropTypes.string,
wrapperClass: PropTypes.string,
className: PropTypes.string,
minDate: PropTypes.object,
maxDate: PropTypes.object,
onChange: PropTypes.func.isRequired,
tabIndex: PropTypes.number,
hasDefaultDate: PropTypes.bool,
selected: PropTypes.oneOfType([PropTypes.string, PropTypes.object])
},
getDefaultProps: function() {
return {
hasDefaultDate: true,
placeholderText: 'Select a date',
dateFormat: 'MM/DD/YYYY',
className: null,
includeTime: false,
returnDateString: null,
onChange: function() {}
};
},
getInitialState: function() {
var hasDefaultDate, selected;
hasDefaultDate = this.props.hasDefaultDate;
if (hasDefaultDate && (this.props.selected != null)) {
selected = this.props.selected;
} else if (hasDefaultDate) {
selected = moment();
} else {
selected = null;
}
return {
selected: selected
};
},
componentWillReceiveProps: function(nextProps) {
var ref1, ref2;
if (((ref1 = nextProps.selected) != null ? ref1.format(this.props.returnDateString || this.props.dateFormat) : void 0) !== ((ref2 = this.props.selected) != null ? ref2.format(this.props.returnDateString || this.props.dateFormat) : void 0)) {
return this.setState({
selected: nextProps.selected
});
}
},
render: function() {
var mainClass, props, wrapperClass;
props = _.clone(this.props);
props.onChange = this.handleDateChange;
wrapperClass = props.wrapperClass;
mainClass = 'datepicker-wrapper';
if (wrapperClass != null) {
mainClass += " " + wrapperClass;
}
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 hasDefaultDate, ref1, returnDateString, selected;
ref1 = this.props, returnDateString = ref1.returnDateString, hasDefaultDate = ref1.hasDefaultDate;
selected = this.state.selected;
if ((returnDateString != null) && (selected != null)) {
return selected.format(returnDateString);
} else if (selected != null) {
return selected;
} else if (hasDefaultDate) {
return moment();
} else {
return '';
}
}
});
module.exports = DatePicker;
}).call(this);