rsuite
Version:
A suite of react components
71 lines (69 loc) • 2.44 kB
JavaScript
'use client';
;
exports.__esModule = true;
exports.getMonthHoverRange = void 0;
exports.getSafeCalendarDate = getSafeCalendarDate;
exports.isSameRange = exports.getWeekHoverRange = void 0;
var _date = require("../internals/utils/date");
function getSafeCalendarDate({
value,
calendarKey = 'start',
allowSameMonth
}) {
var _value;
// Update calendarDate if the value is not null
value = (_value = value) !== null && _value !== void 0 ? _value : [];
const gap = allowSameMonth ? 0 : 1;
if (value[0] && value[1]) {
const diffMonth = (0, _date.differenceInCalendarMonths)(value[1], value[0]);
if (calendarKey === 'start') {
return [value[0], diffMonth <= 0 ? (0, _date.copyTime)({
from: value[1],
to: (0, _date.addMonths)(value[0], gap)
}) : value[1]];
} else if (calendarKey === 'end') {
return [diffMonth <= 0 ? (0, _date.copyTime)({
from: value[0],
to: (0, _date.addMonths)(value[1], -gap)
}) : value[0], value[1]];
}
// If only the start date
} else if (value[0]) {
return [value[0], (0, _date.addMonths)(value[0], gap)];
}
const todayDate = (0, _date.startOfToday)();
return [todayDate, (0, _date.addMonths)(todayDate, gap)];
}
const isSameRange = (source, dest, format) => {
// If both are null, reguard as same
if (null === source && null === dest) return true;
// If only one is null, regard as different
if (null === source || null === dest) return false;
let result = (0, _date.isSameDay)(source[0], dest[0]) && (0, _date.isSameDay)(source[1], dest[1]);
if ((0, _date.shouldRenderTime)(format)) {
result &&= (0, _date.isSameSecond)(source[0], dest[0]) && (0, _date.isSameSecond)(source[1], dest[1]);
}
return result;
};
exports.isSameRange = isSameRange;
const getMonthHoverRange = date => [(0, _date.startOfMonth)(date), (0, _date.endOfMonth)(date)];
exports.getMonthHoverRange = getMonthHoverRange;
const getWeekHoverRange = (date, options) => {
const {
isoWeek,
weekStart = 0,
locale
} = options;
if (isoWeek) {
// set to the first day of this week according to ISO 8601, 12:00 am
return [(0, _date.startOfISOWeek)(date), (0, _date.endOfISOWeek)(date)];
}
return [(0, _date.startOfWeek)(date, {
weekStartsOn: weekStart,
locale
}), (0, _date.endOfWeek)(date, {
weekStartsOn: weekStart,
locale
})];
};
exports.getWeekHoverRange = getWeekHoverRange;