@react-aria/calendar 3.0.0-nightly.3113 → 3.0.0-nightly.3114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ar-AE.main.js +17 -0
- package/dist/ar-AE.main.js.map +1 -0
- package/dist/ar-AE.mjs +19 -0
- package/dist/ar-AE.module.js +19 -0
- package/dist/ar-AE.module.js.map +1 -0
- package/dist/bg-BG.main.js +17 -0
- package/dist/bg-BG.main.js.map +1 -0
- package/dist/bg-BG.mjs +19 -0
- package/dist/bg-BG.module.js +19 -0
- package/dist/bg-BG.module.js.map +1 -0
- package/dist/cs-CZ.main.js +17 -0
- package/dist/cs-CZ.main.js.map +1 -0
- package/dist/cs-CZ.mjs +19 -0
- package/dist/cs-CZ.module.js +19 -0
- package/dist/cs-CZ.module.js.map +1 -0
- package/dist/da-DK.main.js +17 -0
- package/dist/da-DK.main.js.map +1 -0
- package/dist/da-DK.mjs +19 -0
- package/dist/da-DK.module.js +19 -0
- package/dist/da-DK.module.js.map +1 -0
- package/dist/de-DE.main.js +17 -0
- package/dist/de-DE.main.js.map +1 -0
- package/dist/de-DE.mjs +19 -0
- package/dist/de-DE.module.js +19 -0
- package/dist/de-DE.module.js.map +1 -0
- package/dist/el-GR.main.js +17 -0
- package/dist/el-GR.main.js.map +1 -0
- package/dist/el-GR.mjs +19 -0
- package/dist/el-GR.module.js +19 -0
- package/dist/el-GR.module.js.map +1 -0
- package/dist/en-US.main.js +17 -0
- package/dist/en-US.main.js.map +1 -0
- package/dist/en-US.mjs +19 -0
- package/dist/en-US.module.js +19 -0
- package/dist/en-US.module.js.map +1 -0
- package/dist/es-ES.main.js +17 -0
- package/dist/es-ES.main.js.map +1 -0
- package/dist/es-ES.mjs +19 -0
- package/dist/es-ES.module.js +19 -0
- package/dist/es-ES.module.js.map +1 -0
- package/dist/et-EE.main.js +17 -0
- package/dist/et-EE.main.js.map +1 -0
- package/dist/et-EE.mjs +19 -0
- package/dist/et-EE.module.js +19 -0
- package/dist/et-EE.module.js.map +1 -0
- package/dist/fi-FI.main.js +17 -0
- package/dist/fi-FI.main.js.map +1 -0
- package/dist/fi-FI.mjs +19 -0
- package/dist/fi-FI.module.js +19 -0
- package/dist/fi-FI.module.js.map +1 -0
- package/dist/fr-FR.main.js +17 -0
- package/dist/fr-FR.main.js.map +1 -0
- package/dist/fr-FR.mjs +19 -0
- package/dist/fr-FR.module.js +19 -0
- package/dist/fr-FR.module.js.map +1 -0
- package/dist/he-IL.main.js +17 -0
- package/dist/he-IL.main.js.map +1 -0
- package/dist/he-IL.mjs +19 -0
- package/dist/he-IL.module.js +19 -0
- package/dist/he-IL.module.js.map +1 -0
- package/dist/hr-HR.main.js +17 -0
- package/dist/hr-HR.main.js.map +1 -0
- package/dist/hr-HR.mjs +19 -0
- package/dist/hr-HR.module.js +19 -0
- package/dist/hr-HR.module.js.map +1 -0
- package/dist/hu-HU.main.js +17 -0
- package/dist/hu-HU.main.js.map +1 -0
- package/dist/hu-HU.mjs +19 -0
- package/dist/hu-HU.module.js +19 -0
- package/dist/hu-HU.module.js.map +1 -0
- package/dist/import.mjs +23 -0
- package/dist/intlStrings.main.js +108 -0
- package/dist/intlStrings.main.js.map +1 -0
- package/dist/intlStrings.mjs +110 -0
- package/dist/intlStrings.module.js +110 -0
- package/dist/intlStrings.module.js.map +1 -0
- package/dist/it-IT.main.js +17 -0
- package/dist/it-IT.main.js.map +1 -0
- package/dist/it-IT.mjs +19 -0
- package/dist/it-IT.module.js +19 -0
- package/dist/it-IT.module.js.map +1 -0
- package/dist/ja-JP.main.js +17 -0
- package/dist/ja-JP.main.js.map +1 -0
- package/dist/ja-JP.mjs +19 -0
- package/dist/ja-JP.module.js +19 -0
- package/dist/ja-JP.module.js.map +1 -0
- package/dist/ko-KR.main.js +17 -0
- package/dist/ko-KR.main.js.map +1 -0
- package/dist/ko-KR.mjs +19 -0
- package/dist/ko-KR.module.js +19 -0
- package/dist/ko-KR.module.js.map +1 -0
- package/dist/lt-LT.main.js +17 -0
- package/dist/lt-LT.main.js.map +1 -0
- package/dist/lt-LT.mjs +19 -0
- package/dist/lt-LT.module.js +19 -0
- package/dist/lt-LT.module.js.map +1 -0
- package/dist/lv-LV.main.js +17 -0
- package/dist/lv-LV.main.js.map +1 -0
- package/dist/lv-LV.mjs +19 -0
- package/dist/lv-LV.module.js +19 -0
- package/dist/lv-LV.module.js.map +1 -0
- package/dist/main.js +19 -660
- package/dist/main.js.map +1 -1
- package/dist/module.js +16 -644
- package/dist/module.js.map +1 -1
- package/dist/nb-NO.main.js +17 -0
- package/dist/nb-NO.main.js.map +1 -0
- package/dist/nb-NO.mjs +19 -0
- package/dist/nb-NO.module.js +19 -0
- package/dist/nb-NO.module.js.map +1 -0
- package/dist/nl-NL.main.js +17 -0
- package/dist/nl-NL.main.js.map +1 -0
- package/dist/nl-NL.mjs +19 -0
- package/dist/nl-NL.module.js +19 -0
- package/dist/nl-NL.module.js.map +1 -0
- package/dist/pl-PL.main.js +17 -0
- package/dist/pl-PL.main.js.map +1 -0
- package/dist/pl-PL.mjs +19 -0
- package/dist/pl-PL.module.js +19 -0
- package/dist/pl-PL.module.js.map +1 -0
- package/dist/pt-BR.main.js +17 -0
- package/dist/pt-BR.main.js.map +1 -0
- package/dist/pt-BR.mjs +19 -0
- package/dist/pt-BR.module.js +19 -0
- package/dist/pt-BR.module.js.map +1 -0
- package/dist/pt-PT.main.js +17 -0
- package/dist/pt-PT.main.js.map +1 -0
- package/dist/pt-PT.mjs +19 -0
- package/dist/pt-PT.module.js +19 -0
- package/dist/pt-PT.module.js.map +1 -0
- package/dist/ro-RO.main.js +17 -0
- package/dist/ro-RO.main.js.map +1 -0
- package/dist/ro-RO.mjs +19 -0
- package/dist/ro-RO.module.js +19 -0
- package/dist/ro-RO.module.js.map +1 -0
- package/dist/ru-RU.main.js +17 -0
- package/dist/ru-RU.main.js.map +1 -0
- package/dist/ru-RU.mjs +19 -0
- package/dist/ru-RU.module.js +19 -0
- package/dist/ru-RU.module.js.map +1 -0
- package/dist/sk-SK.main.js +17 -0
- package/dist/sk-SK.main.js.map +1 -0
- package/dist/sk-SK.mjs +19 -0
- package/dist/sk-SK.module.js +19 -0
- package/dist/sk-SK.module.js.map +1 -0
- package/dist/sl-SI.main.js +17 -0
- package/dist/sl-SI.main.js.map +1 -0
- package/dist/sl-SI.mjs +19 -0
- package/dist/sl-SI.module.js +19 -0
- package/dist/sl-SI.module.js.map +1 -0
- package/dist/sr-SP.main.js +17 -0
- package/dist/sr-SP.main.js.map +1 -0
- package/dist/sr-SP.mjs +19 -0
- package/dist/sr-SP.module.js +19 -0
- package/dist/sr-SP.module.js.map +1 -0
- package/dist/sv-SE.main.js +17 -0
- package/dist/sv-SE.main.js.map +1 -0
- package/dist/sv-SE.mjs +19 -0
- package/dist/sv-SE.module.js +19 -0
- package/dist/sv-SE.module.js.map +1 -0
- package/dist/tr-TR.main.js +17 -0
- package/dist/tr-TR.main.js.map +1 -0
- package/dist/tr-TR.mjs +19 -0
- package/dist/tr-TR.module.js +19 -0
- package/dist/tr-TR.module.js.map +1 -0
- package/dist/types.d.ts +96 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/uk-UA.main.js +17 -0
- package/dist/uk-UA.main.js.map +1 -0
- package/dist/uk-UA.mjs +19 -0
- package/dist/uk-UA.module.js +19 -0
- package/dist/uk-UA.module.js.map +1 -0
- package/dist/useCalendar.main.js +25 -0
- package/dist/useCalendar.main.js.map +1 -0
- package/{src/types.ts → dist/useCalendar.mjs} +7 -12
- package/dist/useCalendar.module.js +20 -0
- package/dist/useCalendar.module.js.map +1 -0
- package/dist/useCalendarBase.main.js +112 -0
- package/dist/useCalendarBase.main.js.map +1 -0
- package/dist/useCalendarBase.mjs +107 -0
- package/dist/useCalendarBase.module.js +107 -0
- package/dist/useCalendarBase.module.js.map +1 -0
- package/dist/useCalendarCell.main.js +276 -0
- package/dist/useCalendarCell.main.js.map +1 -0
- package/dist/useCalendarCell.mjs +271 -0
- package/dist/useCalendarCell.module.js +271 -0
- package/dist/useCalendarCell.module.js.map +1 -0
- package/dist/useCalendarGrid.main.js +139 -0
- package/dist/useCalendarGrid.main.js.map +1 -0
- package/dist/useCalendarGrid.mjs +134 -0
- package/dist/useCalendarGrid.module.js +134 -0
- package/dist/useCalendarGrid.module.js.map +1 -0
- package/dist/useRangeCalendar.main.js +66 -0
- package/dist/useRangeCalendar.main.js.map +1 -0
- package/dist/useRangeCalendar.mjs +61 -0
- package/dist/useRangeCalendar.module.js +61 -0
- package/dist/useRangeCalendar.module.js.map +1 -0
- package/dist/utils.main.js +138 -0
- package/dist/utils.main.js.map +1 -0
- package/dist/utils.mjs +130 -0
- package/dist/utils.module.js +130 -0
- package/dist/utils.module.js.map +1 -0
- package/dist/zh-CN.main.js +17 -0
- package/dist/zh-CN.main.js.map +1 -0
- package/dist/zh-CN.mjs +19 -0
- package/dist/zh-CN.module.js +19 -0
- package/dist/zh-CN.module.js.map +1 -0
- package/dist/zh-TW.main.js +17 -0
- package/dist/zh-TW.main.js.map +1 -0
- package/dist/zh-TW.mjs +19 -0
- package/dist/zh-TW.module.js +19 -0
- package/dist/zh-TW.module.js.map +1 -0
- package/package.json +19 -15
- package/src/index.ts +9 -6
- package/src/useCalendar.ts +7 -4
- package/src/useCalendarBase.ts +67 -22
- package/src/useCalendarCell.ts +154 -45
- package/src/useCalendarGrid.ts +76 -33
- package/src/useRangeCalendar.ts +28 -17
- package/src/utils.ts +79 -15
- package/src/useCalendarTableHeader.ts +0 -11
package/src/utils.ts
CHANGED
|
@@ -10,17 +10,29 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import {CalendarDate, endOfMonth, isSameDay, startOfMonth
|
|
13
|
+
import {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';
|
|
14
14
|
import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
|
|
15
15
|
// @ts-ignore
|
|
16
16
|
import intlMessages from '../intl/*.json';
|
|
17
|
-
import {
|
|
17
|
+
import type {LocalizedStringFormatter} from '@internationalized/string';
|
|
18
|
+
import {useDateFormatter, useLocalizedStringFormatter} from '@react-aria/i18n';
|
|
18
19
|
import {useMemo} from 'react';
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
interface HookData {
|
|
22
|
+
ariaLabel: string,
|
|
23
|
+
ariaLabelledBy: string,
|
|
24
|
+
errorMessageId: string,
|
|
25
|
+
selectedDateDescription: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();
|
|
29
|
+
|
|
30
|
+
export function getEraFormat(date: CalendarDate): 'short' | undefined {
|
|
31
|
+
return date?.calendar.identifier === 'gregory' && date.era === 'BC' ? 'short' : undefined;
|
|
32
|
+
}
|
|
21
33
|
|
|
22
34
|
export function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {
|
|
23
|
-
let
|
|
35
|
+
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');
|
|
24
36
|
|
|
25
37
|
let start: CalendarDate, end: CalendarDate;
|
|
26
38
|
if ('highlightedRange' in state) {
|
|
@@ -29,6 +41,15 @@ export function useSelectedDateDescription(state: CalendarState | RangeCalendarS
|
|
|
29
41
|
start = end = state.value;
|
|
30
42
|
}
|
|
31
43
|
|
|
44
|
+
let dateFormatter = useDateFormatter({
|
|
45
|
+
weekday: 'long',
|
|
46
|
+
month: 'long',
|
|
47
|
+
year: 'numeric',
|
|
48
|
+
day: 'numeric',
|
|
49
|
+
era: getEraFormat(start) || getEraFormat(end),
|
|
50
|
+
timeZone: state.timeZone
|
|
51
|
+
});
|
|
52
|
+
|
|
32
53
|
let anchorDate = 'anchorDate' in state ? state.anchorDate : null;
|
|
33
54
|
return useMemo(() => {
|
|
34
55
|
// No message if currently selecting a range, or there is nothing highlighted.
|
|
@@ -36,26 +57,36 @@ export function useSelectedDateDescription(state: CalendarState | RangeCalendarS
|
|
|
36
57
|
// Use a single date message if the start and end dates are the same day,
|
|
37
58
|
// otherwise include both dates.
|
|
38
59
|
if (isSameDay(start, end)) {
|
|
39
|
-
|
|
60
|
+
let date = dateFormatter.format(start.toDate(state.timeZone));
|
|
61
|
+
return stringFormatter.format('selectedDateDescription', {date});
|
|
40
62
|
} else {
|
|
41
|
-
|
|
63
|
+
let dateRange = formatRange(dateFormatter, stringFormatter, start, end, state.timeZone);
|
|
64
|
+
|
|
65
|
+
return stringFormatter.format('selectedRangeDescription', {dateRange});
|
|
42
66
|
}
|
|
43
67
|
}
|
|
44
68
|
return '';
|
|
45
|
-
}, [start, end, anchorDate, state.timeZone,
|
|
69
|
+
}, [start, end, anchorDate, state.timeZone, stringFormatter, dateFormatter]);
|
|
46
70
|
}
|
|
47
71
|
|
|
48
|
-
export function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string) {
|
|
72
|
+
export function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {
|
|
73
|
+
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');
|
|
74
|
+
let era: any = getEraFormat(startDate) || getEraFormat(endDate);
|
|
49
75
|
let monthFormatter = useDateFormatter({
|
|
50
76
|
month: 'long',
|
|
51
77
|
year: 'numeric',
|
|
52
|
-
era
|
|
53
|
-
calendar: startDate.calendar.identifier
|
|
78
|
+
era,
|
|
79
|
+
calendar: startDate.calendar.identifier,
|
|
80
|
+
timeZone
|
|
54
81
|
});
|
|
55
82
|
|
|
56
83
|
let dateFormatter = useDateFormatter({
|
|
57
|
-
|
|
58
|
-
|
|
84
|
+
month: 'long',
|
|
85
|
+
year: 'numeric',
|
|
86
|
+
day: 'numeric',
|
|
87
|
+
era,
|
|
88
|
+
calendar: startDate.calendar.identifier,
|
|
89
|
+
timeZone
|
|
59
90
|
});
|
|
60
91
|
|
|
61
92
|
return useMemo(() => {
|
|
@@ -65,10 +96,43 @@ export function useVisibleRangeDescription(startDate: CalendarDate, endDate: Cal
|
|
|
65
96
|
if (isSameDay(endDate, endOfMonth(startDate))) {
|
|
66
97
|
return monthFormatter.format(startDate.toDate(timeZone));
|
|
67
98
|
} else if (isSameDay(endDate, endOfMonth(endDate))) {
|
|
68
|
-
return
|
|
99
|
+
return isAria
|
|
100
|
+
? formatRange(monthFormatter, stringFormatter, startDate, endDate, timeZone)
|
|
101
|
+
: monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
69
102
|
}
|
|
70
103
|
}
|
|
71
104
|
|
|
72
|
-
return
|
|
73
|
-
|
|
105
|
+
return isAria
|
|
106
|
+
? formatRange(dateFormatter, stringFormatter, startDate, endDate, timeZone)
|
|
107
|
+
: dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
108
|
+
}, [startDate, endDate, monthFormatter, dateFormatter, stringFormatter, timeZone, isAria]);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function formatRange(dateFormatter: DateFormatter, stringFormatter: LocalizedStringFormatter, start: CalendarDate, end: CalendarDate, timeZone: string) {
|
|
112
|
+
let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));
|
|
113
|
+
|
|
114
|
+
// Find the separator between the start and end date. This is determined
|
|
115
|
+
// by finding the last shared literal before the end range.
|
|
116
|
+
let separatorIndex = -1;
|
|
117
|
+
for (let i = 0; i < parts.length; i++) {
|
|
118
|
+
let part = parts[i];
|
|
119
|
+
if (part.source === 'shared' && part.type === 'literal') {
|
|
120
|
+
separatorIndex = i;
|
|
121
|
+
} else if (part.source === 'endRange') {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Now we can combine the parts into start and end strings.
|
|
127
|
+
let startValue = '';
|
|
128
|
+
let endValue = '';
|
|
129
|
+
for (let i = 0; i < parts.length; i++) {
|
|
130
|
+
if (i < separatorIndex) {
|
|
131
|
+
startValue += parts[i].value;
|
|
132
|
+
} else if (i > separatorIndex) {
|
|
133
|
+
endValue += parts[i].value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return stringFormatter.format('dateRange', {startDate: startValue, endDate: endValue});
|
|
74
138
|
}
|