money-control-frontend/src/widgets/CalendarWidget/ui/CalendarWidgetContext.jsx

42 lines
1019 B
JavaScript

import PropTypes from 'prop-types';
import { createContext, useMemo, useState } from 'react';
export const CalendarWidgetContext = createContext({});
export const CalendarWidgetProvider = (props) => {
const {
children,
maxDate = new Date(2030, 0, 1),
minDate = new Date(1990, 0, 1),
locale = 'ru',
...restProps
} = props;
const [targetDate, setTargetDate] = useState(new Date());
const contextValue = useMemo(() => ({
targetYear: targetDate.getFullYear(),
targetMonthIndex: targetDate.getMonth(),
targetDate,
setTargetDate,
minDate,
maxDate,
locale,
...restProps,
}), [maxDate, minDate, targetDate, locale, restProps]);
return (
<CalendarWidgetContext.Provider value={contextValue}>
{children}
</CalendarWidgetContext.Provider>
);
};
CalendarWidgetProvider.propTypes = {
children: PropTypes.node.isRequired,
maxDate: PropTypes.instanceOf(Date),
minDate: PropTypes.instanceOf(Date),
locale: PropTypes.oneOf(['ru', 'en']),
};