import * as React from 'react'; import { DefaultButton } from 'office-ui-fabric-react'; import { addDays, getDateRangeArray } from 'office-ui-fabric-react/lib/utilities/dateMath/DateMath'; import { Calendar, DateRangeType, DayOfWeek, defaultDayPickerStrings } from '@uifabric/date-time'; import * as styles from './Calendar.Example.scss'; const dateRangeType = DateRangeType.Month; export interface ICalendarInlineExampleState { selectedDate?: Date; selectedDateRange?: Date[]; } export class CalendarInlineMonthSelectionExample extends React.Component<{}, ICalendarInlineExampleState> { public constructor(props: {}) { super(props); this.state = { selectedDate: new Date(), selectedDateRange: undefined, }; } public render(): JSX.Element { let dateRangeString: string | null = null; if (this.state.selectedDateRange) { const rangeStart = this.state.selectedDateRange[0]; const rangeEnd = this.state.selectedDateRange[this.state.selectedDateRange.length - 1]; dateRangeString = rangeStart.toLocaleDateString() + '-' + rangeEnd.toLocaleDateString(); } return (
Selected date(s):{' '} {!this.state.selectedDate ? 'Not set' : this.state.selectedDate.toLocaleString()}
Selected dates: {!dateRangeString ? 'Not set' : dateRangeString}
); } private _goPrevious = (): void => { this.setState((prevState: ICalendarInlineExampleState) => { const selectedDate = prevState.selectedDate || new Date(); const dateRangeArray = getDateRangeArray(selectedDate, dateRangeType, DayOfWeek.Sunday); const subtractFrom = new Date(dateRangeArray[0].getFullYear(), dateRangeArray[0].getMonth(), 1); const daysToSubtract = 1; const newSelectedDate = addDays(subtractFrom, -daysToSubtract); return { selectedDate: newSelectedDate, }; }); }; private _goNext = (): void => { this.setState((prevState: ICalendarInlineExampleState) => { const selectedDate = prevState.selectedDate || new Date(); const dateRangeArray = getDateRangeArray(selectedDate, dateRangeType, DayOfWeek.Sunday); const newSelectedDate = addDays(dateRangeArray.pop()!, 1); return { selectedDate: newSelectedDate, }; }); }; private _onSelectDate = (date: Date, dateRangeArray: Date[]): void => { this.setState((prevState: ICalendarInlineExampleState) => { return { selectedDate: date, selectedDateRange: dateRangeArray, }; }); }; }