|
@@ -190,8 +190,8 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
|
|
|
|
getWeeklyData(value: Date, dateFnsLocale: Locale) {
|
|
getWeeklyData(value: Date, dateFnsLocale: Locale) {
|
|
const data = {} as WeeklyData;
|
|
const data = {} as WeeklyData;
|
|
- data.month = format(value, 'LLL', { locale: dateFnsLocale });
|
|
|
|
const { weekStartsOn } = this.getProps();
|
|
const { weekStartsOn } = this.getProps();
|
|
|
|
+ data.month = format(value, 'LLL', { locale: dateFnsLocale, weekStartsOn });
|
|
data.week = calcWeekData(value, 'week', dateFnsLocale, weekStartsOn);
|
|
data.week = calcWeekData(value, 'week', dateFnsLocale, weekStartsOn);
|
|
this._adapter.setWeeklyData(data);
|
|
this._adapter.setWeeklyData(data);
|
|
return data;
|
|
return data;
|
|
@@ -199,10 +199,10 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
|
|
|
|
getRangeData(value: Date, dateFnsLocale: Locale) {
|
|
getRangeData(value: Date, dateFnsLocale: Locale) {
|
|
const data = {} as { month: string; week: Array<DateObj> };
|
|
const data = {} as { month: string; week: Array<DateObj> };
|
|
- const { range } = this.getProps();
|
|
|
|
|
|
+ const { range, weekStartsOn } = this.getProps();
|
|
const len = differenceInCalendarDays(range[1], range[0]);
|
|
const len = differenceInCalendarDays(range[1], range[0]);
|
|
- data.month = format(value, 'LLL', { locale: dateFnsLocale });
|
|
|
|
- data.week = calcRangeData(value, range[0], len, 'week', dateFnsLocale);
|
|
|
|
|
|
+ data.month = format(value, 'LLL', { locale: dateFnsLocale, weekStartsOn });
|
|
|
|
+ data.week = calcRangeData(value, range[0], len, 'week', dateFnsLocale, weekStartsOn);
|
|
this._adapter.setRangeData(data);
|
|
this._adapter.setRangeData(data);
|
|
return data;
|
|
return data;
|
|
}
|
|
}
|
|
@@ -211,7 +211,7 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
const monthStart = startOfMonth(value);
|
|
const monthStart = startOfMonth(value);
|
|
const data = {} as MonthData;
|
|
const data = {} as MonthData;
|
|
const { weekStartsOn } = this.getProps();
|
|
const { weekStartsOn } = this.getProps();
|
|
- const numberOfWeek = getWeeksInMonth(value);
|
|
|
|
|
|
+ const numberOfWeek = getWeeksInMonth(value, { weekStartsOn });
|
|
[...Array(numberOfWeek).keys()].map(ind => {
|
|
[...Array(numberOfWeek).keys()].map(ind => {
|
|
data[ind] = calcWeekData(addDays(monthStart, ind * 7), 'month', dateFnsLocale, weekStartsOn);
|
|
data[ind] = calcWeekData(addDays(monthStart, ind * 7), 'month', dateFnsLocale, weekStartsOn);
|
|
});
|
|
});
|
|
@@ -263,12 +263,13 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
// ================== Weekly Event ==================
|
|
// ================== Weekly Event ==================
|
|
|
|
|
|
_parseWeeklyEvents(events: ParsedEvents['allDay'], weekStart: Date) {
|
|
_parseWeeklyEvents(events: ParsedEvents['allDay'], weekStart: Date) {
|
|
|
|
+ const { weekStartsOn } = this.getProps();
|
|
let parsed = [[]] as ParsedRangeEvent[][];
|
|
let parsed = [[]] as ParsedRangeEvent[][];
|
|
- const filtered = filterWeeklyEvents(events, weekStart);
|
|
|
|
|
|
+ const filtered = filterWeeklyEvents(events, weekStart, weekStartsOn);
|
|
[...filtered.keys()].sort((a, b) => sortDate(a, b)).forEach(item => {
|
|
[...filtered.keys()].sort((a, b) => sortDate(a, b)).forEach(item => {
|
|
const startDate = new Date(item);
|
|
const startDate = new Date(item);
|
|
const curr = filtered.get(item).filter(event => isSameDay(event.date, startDate));
|
|
const curr = filtered.get(item).filter(event => isSameDay(event.date, startDate));
|
|
- parsed = parseWeeklyAllDayEvent(curr, startDate, weekStart, parsed);
|
|
|
|
|
|
+ parsed = parseWeeklyAllDayEvent(curr, startDate, weekStart, parsed, weekStartsOn);
|
|
});
|
|
});
|
|
return parsed;
|
|
return parsed;
|
|
}
|
|
}
|
|
@@ -332,7 +333,7 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
|
|
|
|
getParseMonthlyEvents(itemLimit: number) {
|
|
getParseMonthlyEvents(itemLimit: number) {
|
|
const parsed: any = {};
|
|
const parsed: any = {};
|
|
- const { displayValue, events } = this.getProps();
|
|
|
|
|
|
+ const { displayValue, events, weekStartsOn } = this.getProps();
|
|
const currDate = this._getDate();
|
|
const currDate = this._getDate();
|
|
const firstDayOfMonth = startOfMonth(displayValue);
|
|
const firstDayOfMonth = startOfMonth(displayValue);
|
|
const lastDayOfMonth = endOfMonth(displayValue);
|
|
const lastDayOfMonth = endOfMonth(displayValue);
|
|
@@ -354,31 +355,30 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
|
|
// WeekInd calculation error, need to consider the boundary situation at the beginning/end of the month
|
|
// WeekInd calculation error, need to consider the boundary situation at the beginning/end of the month
|
|
// When the date falls within the month
|
|
// When the date falls within the month
|
|
if (isSameMonth(item.date, displayValue)) {
|
|
if (isSameMonth(item.date, displayValue)) {
|
|
- const weekInd = getWeekOfMonth(item.date) - 1;
|
|
|
|
|
|
+ const weekInd = getWeekOfMonth(item.date, { weekStartsOn }) - 1;
|
|
this.pushDayEventIntoWeekMap(item, weekInd, parsed);
|
|
this.pushDayEventIntoWeekMap(item, weekInd, parsed);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
// When the date is within the previous month
|
|
// When the date is within the previous month
|
|
if (isBefore(item.date, firstDayOfMonth)) {
|
|
if (isBefore(item.date, firstDayOfMonth)) {
|
|
- if (isSameWeek(item.date, firstDayOfMonth)) {
|
|
|
|
|
|
+ if (isSameWeek(item.date, firstDayOfMonth, { weekStartsOn })) {
|
|
this.pushDayEventIntoWeekMap(item, 0, parsed);
|
|
this.pushDayEventIntoWeekMap(item, 0, parsed);
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
// When the date is within the next month
|
|
// When the date is within the next month
|
|
if (isAfter(item.date, lastDayOfMonth)) {
|
|
if (isAfter(item.date, lastDayOfMonth)) {
|
|
- if (isSameWeek(item.date, lastDayOfMonth)) {
|
|
|
|
- const weekInd = getWeekOfMonth(lastDayOfMonth) - 1;
|
|
|
|
|
|
+ if (isSameWeek(item.date, lastDayOfMonth, { weekStartsOn })) {
|
|
|
|
+ const weekInd = getWeekOfMonth(lastDayOfMonth, { weekStartsOn }) - 1;
|
|
this.pushDayEventIntoWeekMap(item, weekInd, parsed);
|
|
this.pushDayEventIntoWeekMap(item, weekInd, parsed);
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
-
|
|
|
|
Object.keys(parsed).forEach(key => {
|
|
Object.keys(parsed).forEach(key => {
|
|
const week = parsed[key];
|
|
const week = parsed[key];
|
|
parsed[key] = {};
|
|
parsed[key] = {};
|
|
- const weekStart = startOfWeek(week[0].date);
|
|
|
|
|
|
+ const weekStart = startOfWeek(week[0].date, { weekStartsOn });
|
|
const weekMap = convertEventsArrToMap(week, 'start', startOfDay);
|
|
const weekMap = convertEventsArrToMap(week, 'start', startOfDay);
|
|
// When there are multiple events in a week, multiple events should be parsed
|
|
// When there are multiple events in a week, multiple events should be parsed
|
|
// const oldParsedWeeklyEvent = this._parseWeeklyEvents(weekMap, weekStart);
|
|
// const oldParsedWeeklyEvent = this._parseWeeklyEvents(weekMap, weekStart);
|