Skip to content

Commit

Permalink
fix(material/core): infer first day of week in native date adapter
Browse files Browse the repository at this point in the history
Some browsers provide information about the first day of the week so we can infer it in the `NativeDateAdapter`.
  • Loading branch information
crisbeto committed Sep 29, 2024
1 parent ff3d342 commit 78af7af
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion src/material/core/datetime/native-date-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,24 @@ export class NativeDateAdapter extends DateAdapter<Date> {
}

getFirstDayOfWeek(): number {
// We can't tell using native JS Date what the first day of the week is, we default to Sunday.
if (typeof Intl !== 'undefined' && Intl.Locale) {
const locale = new Intl.Locale(this.locale) as Intl.Locale & {
getWeekInfo?: () => {firstDay: number};
weekInfo?: {firstDay: number};
};

// Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.
// Note that this isn't supported in all browsers so we need to null check it.
const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay;

if (firstDay != null) {
// `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,
// whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.
return firstDay === 7 ? 0 : firstDay;
}
}

// Default to Sunday if the browser doesn't provide the week information.
return 0;
}

Expand Down

0 comments on commit 78af7af

Please sign in to comment.