import React from 'react';
import PropTypes from 'prop-types';
import createClass from 'create-react-class';
import moment from '../moment-range';
import calendar from 'calendar';
import Immutable from 'immutable';
import BemMixin from '../utils/BemMixin';
import CustomPropTypes from '../utils/CustomPropTypes';
import isMomentRange from '../utils/isMomentRange';
import PureRenderMixin from '../utils/PureRenderMixin';
const CalendarMonth = createClass({
mixins: [BemMixin, PureRenderMixin],
displayName: "CalendarMonth",
propTypes: {
dateComponent: PropTypes.func,
disableNavigation: PropTypes.bool,
enabledRange: CustomPropTypes.momentRange,
firstOfMonth: CustomPropTypes.moment,
firstOfWeek: PropTypes.oneOf([0, 1, 2, 3, 4, 5, 6]),
hideSelection: PropTypes.bool,
highlightedDate: PropTypes.object,
highlightedRange: PropTypes.object,
onMonthChange: PropTypes.func,
onYearChange: PropTypes.func,
value: CustomPropTypes.momentOrMomentRange,
locale: PropTypes.string,
},
setLocale(locale) {
moment.locale(locale);
this.WEEKDAYS = Immutable.List(moment.weekdays()).zip(Immutable.List(moment.weekdaysShort()));
this.MONTHS = Immutable.List(moment.months());
},
componentWillMount() {
const { locale } = this.props;
this.setLocale(locale);
},
componentWillReceiveProps(nextProps) {
const { locale } = nextProps;
if (locale !== this.props.locale) {
this.setLocale(locale);
}
},
renderDay(date, i) {
let {dateComponent: CalendarDate, value, highlightedDate, highlightedRange, hideSelection, enabledRange, ...props} = this.props;
let d = moment(date).locale(this.props.locale);
let isInSelectedRange;
let isSelectedDate;
let isSelectedRangeStart;
let isSelectedRangeEnd;
if (!hideSelection && value && moment.isMoment(value) && value.isSame(d, 'day')) {
isSelectedDate = true;
} else if (!hideSelection && value && isMomentRange(value) && value.contains(d)) {
isInSelectedRange = true;
isSelectedRangeStart = value.start.isSame(d, 'day');
isSelectedRangeEnd = value.end.isSame(d, 'day');
}
return (