generator-bingo-dig-h5
Version:
Bingo-dig-h5 generator by BINGO.DIG
80 lines (62 loc) • 2.22 kB
JSX
var React = require('react');
var Classable = require('../../mixins/classable');
var DateTime = require('../../utils/date-time');
var SlideInTransitionGroup = require('../transition-groups/slide-in');
var DateDisplay = React.createClass({
mixins: [Classable],
propTypes: {
selectedDate: React.PropTypes.object.isRequired
},
getInitialState: function() {
return {
transitionDirection: 'up'
};
},
componentWillReceiveProps: function(nextProps) {
var direction;
if (nextProps.selectedDate !== this.props.selectedDate) {
direction = nextProps.selectedDate > this.props.selectedDate ? 'up' : 'down';
this.setState({
transitionDirection: direction
});
}
},
render: function() {
var {
selectedDate,
...other
} = this.props;
var classes = this.getClasses('dig-date-picker-date-display');
var dayOfWeek = DateTime.getDayOfWeek(this.props.selectedDate);
var month = DateTime.getShortMonth(this.props.selectedDate);
var day = this.props.selectedDate.getDate();
var year = this.props.selectedDate.getFullYear();
return (
<div {...other} className={classes}>
<SlideInTransitionGroup
className="dig-date-picker-date-display-dow"
direction={this.state.transitionDirection}>
<div key={dayOfWeek}>{dayOfWeek}</div>
</SlideInTransitionGroup>
<div className="dig-date-picker-date-display-date">
<SlideInTransitionGroup
className="dig-date-picker-date-display-month"
direction={this.state.transitionDirection}>
<div key={month}>{month}</div>
</SlideInTransitionGroup>
<SlideInTransitionGroup
className="dig-date-picker-date-display-day"
direction={this.state.transitionDirection}>
<div key={day}>{day}</div>
</SlideInTransitionGroup>
<SlideInTransitionGroup
className="dig-date-picker-date-display-year"
direction={this.state.transitionDirection}>
<div key={year}>{year}</div>
</SlideInTransitionGroup>
</div>
</div>
);
}
});
module.exports = DateDisplay;