DocSpace-client/packages/components/calendar/index.js

85 lines
2.2 KiB
JavaScript
Raw Normal View History

2023-02-06 14:14:03 +00:00
import React, { useState } from "react";
import PropTypes from "prop-types";
2023-02-02 09:30:50 +00:00
import moment from "moment";
2023-02-02 09:30:50 +00:00
import { Days, Months, Years } from "./sub-components";
import { ColorTheme, ThemeType } from "@docspace/common/components/ColorTheme";
const Calendar = ({
locale,
selectedDate,
onChange,
minDate,
maxDate,
id,
className,
}) => {
moment.locale(locale);
const setSelectedDate = onChange;
const [observedDate, setObservedDate] = useState(moment());
const [selectedScene, setSelectedScene] = useState(0);
minDate = moment(minDate);
maxDate = moment(maxDate);
2023-01-30 14:27:58 +00:00
return (
<ColorTheme themeId={ThemeType.Calendar} id={id} className={className}>
{selectedScene === 0 ? (
<Days
observedDate={observedDate}
setObservedDate={setObservedDate}
setSelectedScene={setSelectedScene}
selectedDate={selectedDate}
setSelectedDate={setSelectedDate}
2023-02-06 14:14:03 +00:00
minDate={minDate}
maxDate={maxDate}
/>
) : selectedScene === 1 ? (
<Months
observedDate={observedDate}
setObservedDate={setObservedDate}
setSelectedScene={setSelectedScene}
selectedDate={selectedDate}
2023-02-06 14:14:03 +00:00
minDate={minDate}
maxDate={maxDate}
/>
) : (
<Years
observedDate={observedDate}
setObservedDate={setObservedDate}
setSelectedScene={setSelectedScene}
selectedDate={selectedDate}
2023-02-06 14:14:03 +00:00
minDate={minDate}
maxDate={maxDate}
/>
)}
</ColorTheme>
2023-01-30 14:27:58 +00:00
);
};
Calendar.PropTypes = {
/** Class name */
className: PropTypes.string,
/** Used as HTML `id` property */
id: PropTypes.string,
/** Specifies the locale of calendar */
locale: PropTypes.string,
/** Value of selected date */
selectedDate: PropTypes.object,
/** Allow you to handle changing events of component */
onChange: PropTypes.func,
/** Specifies the minimum selectable date */
minDate: PropTypes.object,
/** Specifies the maximum selectable date */
maxDate: PropTypes.object,
};
Calendar.defaultProps = {
locale: "en",
minDate: new Date("1970/01/01"),
maxDate: new Date("2040/01/01"),
id: "",
className: "",
};
export default Calendar;