rsuite
Version:
A suite of react components
40 lines (39 loc) • 1.99 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
var _excluded = ["locale", "showWeekNumbers", "isoWeek", "weekStart"];
import { useContext, useMemo } from 'react';
import { CalendarContext } from "../CalendarProvider.js";
export var useCalendar = function useCalendar() {
var _locale$dateLocale2;
var _useContext = useContext(CalendarContext),
locale = _useContext.locale,
showWeekNumbers = _useContext.showWeekNumbers,
isoWeek = _useContext.isoWeek,
weekStartProp = _useContext.weekStart,
rest = _objectWithoutPropertiesLoose(_useContext, _excluded);
// Determine the start of the week based on various conditions
var weekStart = useMemo(function () {
var _locale$dateLocale;
// If weekStartProp is explicitly provided, use it
if (typeof weekStartProp !== 'undefined') {
return weekStartProp;
}
// If using ISO week, start on Monday (1)
else if (isoWeek) {
return 1;
}
// If locale specifies a weekStartsOn option, use it
else if ((locale === null || locale === void 0 || (_locale$dateLocale = locale.dateLocale) === null || _locale$dateLocale === void 0 || (_locale$dateLocale = _locale$dateLocale.options) === null || _locale$dateLocale === void 0 ? void 0 : _locale$dateLocale.weekStartsOn) !== undefined) {
return locale.dateLocale.options.weekStartsOn;
}
// Default to Sunday (0) if no other condition is met
return 0;
}, [weekStartProp, isoWeek, locale === null || locale === void 0 || (_locale$dateLocale2 = locale.dateLocale) === null || _locale$dateLocale2 === void 0 || (_locale$dateLocale2 = _locale$dateLocale2.options) === null || _locale$dateLocale2 === void 0 ? void 0 : _locale$dateLocale2.weekStartsOn]);
return _extends({
locale: locale,
showWeekNumbers: showWeekNumbers,
isoWeek: isoWeek,
weekStart: weekStart
}, rest);
};