diff --git a/packages/@internationalized/date/src/queries.ts b/packages/@internationalized/date/src/queries.ts index 732594d729d..ce48d95d75c 100644 --- a/packages/@internationalized/date/src/queries.ts +++ b/packages/@internationalized/date/src/queries.ts @@ -268,7 +268,9 @@ function getWeekStart(locale: string): number { } let region = getRegion(locale); if (locale.includes('-fw-')) { - let day = locale.split('-fw-')[1]; + // pull the value for the attribute fw from strings such as en-US-u-ca-iso8601-fw-tue or en-US-u-ca-iso8601-fw-mon-nu-thai + // where the fw attribute could be followed by another unicode locale extension or not + let day = locale.split('-fw-')[1].split('-')[0]; if (day === 'mon') { weekInfo = {firstDay: 1}; } else if (day === 'tue') { @@ -284,7 +286,7 @@ function getWeekStart(locale: string): number { } else { weekInfo = {firstDay: 0}; } - } else if (locale.includes('u-ca-iso8601')) { + } else if (locale.includes('-ca-iso8601')) { weekInfo = {firstDay: 1}; } else { weekInfo = {firstDay: region ? weekStartData[region] || 0 : 0}; diff --git a/packages/@internationalized/date/tests/queries.test.js b/packages/@internationalized/date/tests/queries.test.js index 8ae3f8c3a54..40fceb3494e 100644 --- a/packages/@internationalized/date/tests/queries.test.js +++ b/packages/@internationalized/date/tests/queries.test.js @@ -281,6 +281,11 @@ describe('queries', function () { // override first day of week expect(startOfWeek(new CalendarDate(2021, 8, 4), 'en-US-u-ca-iso8601-fw-tue')).toEqual(new CalendarDate(2021, 8, 3)); + + // override applied if extension appears in the middle of other extensions + expect(startOfWeek(new CalendarDate(2021, 8, 4), 'en-US-u-nu-thai-ca-iso8601')).toEqual(new CalendarDate(2021, 8, 2)); + expect(startOfWeek(new CalendarDate(2021, 8, 4), 'en-US-u-nu-thai-ca-iso8601-fw-tue')).toEqual(new CalendarDate(2021, 8, 3)); + expect(startOfWeek(new CalendarDate(2021, 8, 4), 'en-US-u-ca-iso8601-fw-tue-nu-thai')).toEqual(new CalendarDate(2021, 8, 3)); }); }); diff --git a/packages/react-aria-components/stories/Calendar.stories.tsx b/packages/react-aria-components/stories/Calendar.stories.tsx index 0703be28137..4caa40f4229 100644 --- a/packages/react-aria-components/stories/Calendar.stories.tsx +++ b/packages/react-aria-components/stories/Calendar.stories.tsx @@ -161,7 +161,7 @@ export const CalendarFirstDayOfWeekExample: StoryObj