diff --git a/client/src/components/MonthSelector/index.js b/client/src/components/MonthSelector/index.js
index c2b9e59..d4f295c 100644
--- a/client/src/components/MonthSelector/index.js
+++ b/client/src/components/MonthSelector/index.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import moment from 'moment';
-import { Form, Message, Grid } from 'semantic-ui-react';
+import { Form, Grid } from 'semantic-ui-react';
import { defaultDateFormat } from '../../constants/constants';
@@ -9,60 +9,38 @@ class MonthSelector extends Component {
constructor(props) {
super(props);
- const initialStartDate = props.startDate ? moment(props.startDate, defaultDateFormat) : moment().startOf('month');
- let initialEndDate = props.endDate ? moment(props.endDate, defaultDateFormat) : moment();
-
- if (initialStartDate > initialEndDate){
- initialEndDate = initialStartDate.add(1, 'day');
- }
+ const initialDateTime = moment();
+ const initialMonth = (initialDateTime.month() === 0) ? 11 : initialDateTime.month() - 1;
+ const initialYear = (initialDateTime.month() === 0) ? initialDateTime.year() - 1 : initialDateTime.year();
this.state = {
- startDate: initialStartDate,
- endDate: initialEndDate,
- error: null,
- startDateLabel: props.startDateLabel || 'Start date',
- endDateLabel: props.endDateLabel || 'End date',
+ month: initialMonth,
+ year: initialYear,
+ monthLabel: props.monthLabel || 'Month',
+ yearLabel: props.yearLabel || 'Year',
};
}
- onStartDateChange(event) {
- const { endDate, startDateLabel, endDateLabel } = this.state;
+ onMonthSelectionChange = (event, data) => {
+ const newMonthValue = data.value;
+ this.setState({month: newMonthValue});
+ };
- const newStartDate = moment(event.target.value, defaultDateFormat);
- if (newStartDate > endDate){
- this.setState({
- error: `${startDateLabel} cannot be after ${endDateLabel}`
- });
- return;
- }
- this.setState({startDate: newStartDate, error: null});
- }
-
- onEndDateChange(event) {
- const { startDate, startDateLabel, endDateLabel } = this.state;
-
- const newEndDate = moment(event.target.value, defaultDateFormat);
- if (newEndDate < startDate){
- this.setState({
- error: `${startDateLabel} cannot be after ${endDateLabel}`
- });
- return;
- }
- this.setState({endDate: newEndDate, error: null});
- }
-
- onDismiss() {
- this.setState({error: null});
- }
+ onYearChange = (event) => {
+ const newYearValue = event.target.value ? parseInt(event.target.value) : this.state.year;
+ this.setState({year: newYearValue});
+ };
onButtonClick() {
const { onDatesUpdate } = this.props;
- const { startDate, endDate } = this.state;
+ const { month, year } = this.state;
+
+ const monthYearMoment = moment().month(month).year(year);
if (onDatesUpdate){
onDatesUpdate({
- startDate: startDate.format(defaultDateFormat),
- endDate: endDate.format(defaultDateFormat),
+ startDate: monthYearMoment.clone().startOf('month').format(defaultDateFormat),
+ endDate: monthYearMoment.clone().endOf('month').format(defaultDateFormat),
});
}
}
@@ -72,14 +50,11 @@ class MonthSelector extends Component {
}
render() {
- const { startDate, endDate, error, startDateLabel, endDateLabel } = this.state;
+ const { month, year, monthLabel, yearLabel } = this.state;
const { inlineButton } = this.props;
const buttonLabel = this.props.buttonLabel || 'Save';
- const startDateValue = startDate.format(defaultDateFormat);
- const endDateValue = endDate.format(defaultDateFormat);
-
const buttonRender = (