@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.
Files changed (221) hide show
  1. package/dist/ar-AE.main.js +17 -0
  2. package/dist/ar-AE.main.js.map +1 -0
  3. package/dist/ar-AE.mjs +19 -0
  4. package/dist/ar-AE.module.js +19 -0
  5. package/dist/ar-AE.module.js.map +1 -0
  6. package/dist/bg-BG.main.js +17 -0
  7. package/dist/bg-BG.main.js.map +1 -0
  8. package/dist/bg-BG.mjs +19 -0
  9. package/dist/bg-BG.module.js +19 -0
  10. package/dist/bg-BG.module.js.map +1 -0
  11. package/dist/cs-CZ.main.js +17 -0
  12. package/dist/cs-CZ.main.js.map +1 -0
  13. package/dist/cs-CZ.mjs +19 -0
  14. package/dist/cs-CZ.module.js +19 -0
  15. package/dist/cs-CZ.module.js.map +1 -0
  16. package/dist/da-DK.main.js +17 -0
  17. package/dist/da-DK.main.js.map +1 -0
  18. package/dist/da-DK.mjs +19 -0
  19. package/dist/da-DK.module.js +19 -0
  20. package/dist/da-DK.module.js.map +1 -0
  21. package/dist/de-DE.main.js +17 -0
  22. package/dist/de-DE.main.js.map +1 -0
  23. package/dist/de-DE.mjs +19 -0
  24. package/dist/de-DE.module.js +19 -0
  25. package/dist/de-DE.module.js.map +1 -0
  26. package/dist/el-GR.main.js +17 -0
  27. package/dist/el-GR.main.js.map +1 -0
  28. package/dist/el-GR.mjs +19 -0
  29. package/dist/el-GR.module.js +19 -0
  30. package/dist/el-GR.module.js.map +1 -0
  31. package/dist/en-US.main.js +17 -0
  32. package/dist/en-US.main.js.map +1 -0
  33. package/dist/en-US.mjs +19 -0
  34. package/dist/en-US.module.js +19 -0
  35. package/dist/en-US.module.js.map +1 -0
  36. package/dist/es-ES.main.js +17 -0
  37. package/dist/es-ES.main.js.map +1 -0
  38. package/dist/es-ES.mjs +19 -0
  39. package/dist/es-ES.module.js +19 -0
  40. package/dist/es-ES.module.js.map +1 -0
  41. package/dist/et-EE.main.js +17 -0
  42. package/dist/et-EE.main.js.map +1 -0
  43. package/dist/et-EE.mjs +19 -0
  44. package/dist/et-EE.module.js +19 -0
  45. package/dist/et-EE.module.js.map +1 -0
  46. package/dist/fi-FI.main.js +17 -0
  47. package/dist/fi-FI.main.js.map +1 -0
  48. package/dist/fi-FI.mjs +19 -0
  49. package/dist/fi-FI.module.js +19 -0
  50. package/dist/fi-FI.module.js.map +1 -0
  51. package/dist/fr-FR.main.js +17 -0
  52. package/dist/fr-FR.main.js.map +1 -0
  53. package/dist/fr-FR.mjs +19 -0
  54. package/dist/fr-FR.module.js +19 -0
  55. package/dist/fr-FR.module.js.map +1 -0
  56. package/dist/he-IL.main.js +17 -0
  57. package/dist/he-IL.main.js.map +1 -0
  58. package/dist/he-IL.mjs +19 -0
  59. package/dist/he-IL.module.js +19 -0
  60. package/dist/he-IL.module.js.map +1 -0
  61. package/dist/hr-HR.main.js +17 -0
  62. package/dist/hr-HR.main.js.map +1 -0
  63. package/dist/hr-HR.mjs +19 -0
  64. package/dist/hr-HR.module.js +19 -0
  65. package/dist/hr-HR.module.js.map +1 -0
  66. package/dist/hu-HU.main.js +17 -0
  67. package/dist/hu-HU.main.js.map +1 -0
  68. package/dist/hu-HU.mjs +19 -0
  69. package/dist/hu-HU.module.js +19 -0
  70. package/dist/hu-HU.module.js.map +1 -0
  71. package/dist/import.mjs +23 -0
  72. package/dist/intlStrings.main.js +108 -0
  73. package/dist/intlStrings.main.js.map +1 -0
  74. package/dist/intlStrings.mjs +110 -0
  75. package/dist/intlStrings.module.js +110 -0
  76. package/dist/intlStrings.module.js.map +1 -0
  77. package/dist/it-IT.main.js +17 -0
  78. package/dist/it-IT.main.js.map +1 -0
  79. package/dist/it-IT.mjs +19 -0
  80. package/dist/it-IT.module.js +19 -0
  81. package/dist/it-IT.module.js.map +1 -0
  82. package/dist/ja-JP.main.js +17 -0
  83. package/dist/ja-JP.main.js.map +1 -0
  84. package/dist/ja-JP.mjs +19 -0
  85. package/dist/ja-JP.module.js +19 -0
  86. package/dist/ja-JP.module.js.map +1 -0
  87. package/dist/ko-KR.main.js +17 -0
  88. package/dist/ko-KR.main.js.map +1 -0
  89. package/dist/ko-KR.mjs +19 -0
  90. package/dist/ko-KR.module.js +19 -0
  91. package/dist/ko-KR.module.js.map +1 -0
  92. package/dist/lt-LT.main.js +17 -0
  93. package/dist/lt-LT.main.js.map +1 -0
  94. package/dist/lt-LT.mjs +19 -0
  95. package/dist/lt-LT.module.js +19 -0
  96. package/dist/lt-LT.module.js.map +1 -0
  97. package/dist/lv-LV.main.js +17 -0
  98. package/dist/lv-LV.main.js.map +1 -0
  99. package/dist/lv-LV.mjs +19 -0
  100. package/dist/lv-LV.module.js +19 -0
  101. package/dist/lv-LV.module.js.map +1 -0
  102. package/dist/main.js +19 -660
  103. package/dist/main.js.map +1 -1
  104. package/dist/module.js +16 -644
  105. package/dist/module.js.map +1 -1
  106. package/dist/nb-NO.main.js +17 -0
  107. package/dist/nb-NO.main.js.map +1 -0
  108. package/dist/nb-NO.mjs +19 -0
  109. package/dist/nb-NO.module.js +19 -0
  110. package/dist/nb-NO.module.js.map +1 -0
  111. package/dist/nl-NL.main.js +17 -0
  112. package/dist/nl-NL.main.js.map +1 -0
  113. package/dist/nl-NL.mjs +19 -0
  114. package/dist/nl-NL.module.js +19 -0
  115. package/dist/nl-NL.module.js.map +1 -0
  116. package/dist/pl-PL.main.js +17 -0
  117. package/dist/pl-PL.main.js.map +1 -0
  118. package/dist/pl-PL.mjs +19 -0
  119. package/dist/pl-PL.module.js +19 -0
  120. package/dist/pl-PL.module.js.map +1 -0
  121. package/dist/pt-BR.main.js +17 -0
  122. package/dist/pt-BR.main.js.map +1 -0
  123. package/dist/pt-BR.mjs +19 -0
  124. package/dist/pt-BR.module.js +19 -0
  125. package/dist/pt-BR.module.js.map +1 -0
  126. package/dist/pt-PT.main.js +17 -0
  127. package/dist/pt-PT.main.js.map +1 -0
  128. package/dist/pt-PT.mjs +19 -0
  129. package/dist/pt-PT.module.js +19 -0
  130. package/dist/pt-PT.module.js.map +1 -0
  131. package/dist/ro-RO.main.js +17 -0
  132. package/dist/ro-RO.main.js.map +1 -0
  133. package/dist/ro-RO.mjs +19 -0
  134. package/dist/ro-RO.module.js +19 -0
  135. package/dist/ro-RO.module.js.map +1 -0
  136. package/dist/ru-RU.main.js +17 -0
  137. package/dist/ru-RU.main.js.map +1 -0
  138. package/dist/ru-RU.mjs +19 -0
  139. package/dist/ru-RU.module.js +19 -0
  140. package/dist/ru-RU.module.js.map +1 -0
  141. package/dist/sk-SK.main.js +17 -0
  142. package/dist/sk-SK.main.js.map +1 -0
  143. package/dist/sk-SK.mjs +19 -0
  144. package/dist/sk-SK.module.js +19 -0
  145. package/dist/sk-SK.module.js.map +1 -0
  146. package/dist/sl-SI.main.js +17 -0
  147. package/dist/sl-SI.main.js.map +1 -0
  148. package/dist/sl-SI.mjs +19 -0
  149. package/dist/sl-SI.module.js +19 -0
  150. package/dist/sl-SI.module.js.map +1 -0
  151. package/dist/sr-SP.main.js +17 -0
  152. package/dist/sr-SP.main.js.map +1 -0
  153. package/dist/sr-SP.mjs +19 -0
  154. package/dist/sr-SP.module.js +19 -0
  155. package/dist/sr-SP.module.js.map +1 -0
  156. package/dist/sv-SE.main.js +17 -0
  157. package/dist/sv-SE.main.js.map +1 -0
  158. package/dist/sv-SE.mjs +19 -0
  159. package/dist/sv-SE.module.js +19 -0
  160. package/dist/sv-SE.module.js.map +1 -0
  161. package/dist/tr-TR.main.js +17 -0
  162. package/dist/tr-TR.main.js.map +1 -0
  163. package/dist/tr-TR.mjs +19 -0
  164. package/dist/tr-TR.module.js +19 -0
  165. package/dist/tr-TR.module.js.map +1 -0
  166. package/dist/types.d.ts +96 -21
  167. package/dist/types.d.ts.map +1 -1
  168. package/dist/uk-UA.main.js +17 -0
  169. package/dist/uk-UA.main.js.map +1 -0
  170. package/dist/uk-UA.mjs +19 -0
  171. package/dist/uk-UA.module.js +19 -0
  172. package/dist/uk-UA.module.js.map +1 -0
  173. package/dist/useCalendar.main.js +25 -0
  174. package/dist/useCalendar.main.js.map +1 -0
  175. package/{src/types.ts → dist/useCalendar.mjs} +7 -12
  176. package/dist/useCalendar.module.js +20 -0
  177. package/dist/useCalendar.module.js.map +1 -0
  178. package/dist/useCalendarBase.main.js +112 -0
  179. package/dist/useCalendarBase.main.js.map +1 -0
  180. package/dist/useCalendarBase.mjs +107 -0
  181. package/dist/useCalendarBase.module.js +107 -0
  182. package/dist/useCalendarBase.module.js.map +1 -0
  183. package/dist/useCalendarCell.main.js +276 -0
  184. package/dist/useCalendarCell.main.js.map +1 -0
  185. package/dist/useCalendarCell.mjs +271 -0
  186. package/dist/useCalendarCell.module.js +271 -0
  187. package/dist/useCalendarCell.module.js.map +1 -0
  188. package/dist/useCalendarGrid.main.js +139 -0
  189. package/dist/useCalendarGrid.main.js.map +1 -0
  190. package/dist/useCalendarGrid.mjs +134 -0
  191. package/dist/useCalendarGrid.module.js +134 -0
  192. package/dist/useCalendarGrid.module.js.map +1 -0
  193. package/dist/useRangeCalendar.main.js +66 -0
  194. package/dist/useRangeCalendar.main.js.map +1 -0
  195. package/dist/useRangeCalendar.mjs +61 -0
  196. package/dist/useRangeCalendar.module.js +61 -0
  197. package/dist/useRangeCalendar.module.js.map +1 -0
  198. package/dist/utils.main.js +138 -0
  199. package/dist/utils.main.js.map +1 -0
  200. package/dist/utils.mjs +130 -0
  201. package/dist/utils.module.js +130 -0
  202. package/dist/utils.module.js.map +1 -0
  203. package/dist/zh-CN.main.js +17 -0
  204. package/dist/zh-CN.main.js.map +1 -0
  205. package/dist/zh-CN.mjs +19 -0
  206. package/dist/zh-CN.module.js +19 -0
  207. package/dist/zh-CN.module.js.map +1 -0
  208. package/dist/zh-TW.main.js +17 -0
  209. package/dist/zh-TW.main.js.map +1 -0
  210. package/dist/zh-TW.mjs +19 -0
  211. package/dist/zh-TW.module.js +19 -0
  212. package/dist/zh-TW.module.js.map +1 -0
  213. package/package.json +19 -15
  214. package/src/index.ts +9 -6
  215. package/src/useCalendar.ts +7 -4
  216. package/src/useCalendarBase.ts +67 -22
  217. package/src/useCalendarCell.ts +154 -45
  218. package/src/useCalendarGrid.ts +76 -33
  219. package/src/useRangeCalendar.ts +28 -17
  220. package/src/utils.ts +79 -15
  221. 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, toDate} from '@internationalized/date';
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 {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';
17
+ import type {LocalizedStringFormatter} from '@internationalized/string';
18
+ import {useDateFormatter, useLocalizedStringFormatter} from '@react-aria/i18n';
18
19
  import {useMemo} from 'react';
19
20
 
20
- export const calendarIds = new WeakMap<CalendarState | RangeCalendarState, string>();
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 formatMessage = useMessageFormatter(intlMessages);
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
- return formatMessage('selectedDateDescription', {date: toDate(start, state.timeZone)});
60
+ let date = dateFormatter.format(start.toDate(state.timeZone));
61
+ return stringFormatter.format('selectedDateDescription', {date});
40
62
  } else {
41
- return formatMessage('selectedRangeDescription', {start: toDate(start, state.timeZone), end: toDate(end, state.timeZone)});
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, formatMessage]);
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: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
53
- calendar: startDate.calendar.identifier
78
+ era,
79
+ calendar: startDate.calendar.identifier,
80
+ timeZone
54
81
  });
55
82
 
56
83
  let dateFormatter = useDateFormatter({
57
- dateStyle: 'long',
58
- calendar: startDate.calendar.identifier
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 monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
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 dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
73
- }, [startDate, endDate, monthFormatter, dateFormatter, timeZone]);
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
  }
@@ -1,11 +0,0 @@
1
- interface CalendarTableHeaderAria {
2
- columnHeaderProps: {scope?: 'col'}
3
- }
4
-
5
- export function useCalendarTableHeader(): CalendarTableHeaderAria {
6
- return {
7
- columnHeaderProps: {
8
- scope: 'col'
9
- }
10
- };
11
- }