react-aria-components 1.14.0 → 1.15.0

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 (333) hide show
  1. package/dist/Breadcrumbs.main.js +3 -2
  2. package/dist/Breadcrumbs.main.js.map +1 -1
  3. package/dist/Breadcrumbs.mjs +4 -3
  4. package/dist/Breadcrumbs.module.js +4 -3
  5. package/dist/Breadcrumbs.module.js.map +1 -1
  6. package/dist/Button.main.js +1 -1
  7. package/dist/Button.main.js.map +1 -1
  8. package/dist/Button.mjs +2 -2
  9. package/dist/Button.module.js +2 -2
  10. package/dist/Button.module.js.map +1 -1
  11. package/dist/Calendar.main.js +11 -7
  12. package/dist/Calendar.main.js.map +1 -1
  13. package/dist/Calendar.mjs +12 -8
  14. package/dist/Calendar.module.js +12 -8
  15. package/dist/Calendar.module.js.map +1 -1
  16. package/dist/Checkbox.main.js +2 -2
  17. package/dist/Checkbox.main.js.map +1 -1
  18. package/dist/Checkbox.mjs +3 -3
  19. package/dist/Checkbox.module.js +3 -3
  20. package/dist/Checkbox.module.js.map +1 -1
  21. package/dist/ColorArea.main.js +1 -1
  22. package/dist/ColorArea.main.js.map +1 -1
  23. package/dist/ColorArea.mjs +2 -2
  24. package/dist/ColorArea.module.js +2 -2
  25. package/dist/ColorArea.module.js.map +1 -1
  26. package/dist/ColorField.main.js +7 -3
  27. package/dist/ColorField.main.js.map +1 -1
  28. package/dist/ColorField.mjs +8 -4
  29. package/dist/ColorField.module.js +8 -4
  30. package/dist/ColorField.module.js.map +1 -1
  31. package/dist/ColorSlider.main.js +1 -1
  32. package/dist/ColorSlider.main.js.map +1 -1
  33. package/dist/ColorSlider.mjs +2 -2
  34. package/dist/ColorSlider.module.js +2 -2
  35. package/dist/ColorSlider.module.js.map +1 -1
  36. package/dist/ColorSwatch.main.js +1 -1
  37. package/dist/ColorSwatch.main.js.map +1 -1
  38. package/dist/ColorSwatch.mjs +2 -2
  39. package/dist/ColorSwatch.module.js +2 -2
  40. package/dist/ColorSwatch.module.js.map +1 -1
  41. package/dist/ColorSwatchPicker.main.js +2 -0
  42. package/dist/ColorSwatchPicker.main.js.map +1 -1
  43. package/dist/ColorSwatchPicker.mjs +2 -0
  44. package/dist/ColorSwatchPicker.module.js +2 -0
  45. package/dist/ColorSwatchPicker.module.js.map +1 -1
  46. package/dist/ColorThumb.main.js +1 -1
  47. package/dist/ColorThumb.main.js.map +1 -1
  48. package/dist/ColorThumb.mjs +2 -2
  49. package/dist/ColorThumb.module.js +2 -2
  50. package/dist/ColorThumb.module.js.map +1 -1
  51. package/dist/ColorWheel.main.js +2 -2
  52. package/dist/ColorWheel.main.js.map +1 -1
  53. package/dist/ColorWheel.mjs +3 -3
  54. package/dist/ColorWheel.module.js +3 -3
  55. package/dist/ColorWheel.module.js.map +1 -1
  56. package/dist/ComboBox.main.js +2 -2
  57. package/dist/ComboBox.main.js.map +1 -1
  58. package/dist/ComboBox.mjs +3 -3
  59. package/dist/ComboBox.module.js +3 -3
  60. package/dist/ComboBox.module.js.map +1 -1
  61. package/dist/DateField.main.js +3 -3
  62. package/dist/DateField.main.js.map +1 -1
  63. package/dist/DateField.mjs +4 -4
  64. package/dist/DateField.module.js +4 -4
  65. package/dist/DateField.module.js.map +1 -1
  66. package/dist/DatePicker.main.js +2 -2
  67. package/dist/DatePicker.main.js.map +1 -1
  68. package/dist/DatePicker.mjs +3 -3
  69. package/dist/DatePicker.module.js +3 -3
  70. package/dist/DatePicker.module.js.map +1 -1
  71. package/dist/Dialog.main.js +2 -1
  72. package/dist/Dialog.main.js.map +1 -1
  73. package/dist/Dialog.mjs +3 -2
  74. package/dist/Dialog.module.js +3 -2
  75. package/dist/Dialog.module.js.map +1 -1
  76. package/dist/Disclosure.main.js +3 -3
  77. package/dist/Disclosure.main.js.map +1 -1
  78. package/dist/Disclosure.mjs +4 -4
  79. package/dist/Disclosure.module.js +4 -4
  80. package/dist/Disclosure.module.js.map +1 -1
  81. package/dist/DropZone.main.js +2 -3
  82. package/dist/DropZone.main.js.map +1 -1
  83. package/dist/DropZone.mjs +4 -5
  84. package/dist/DropZone.module.js +4 -5
  85. package/dist/DropZone.module.js.map +1 -1
  86. package/dist/Form.main.js +1 -1
  87. package/dist/Form.main.js.map +1 -1
  88. package/dist/Form.mjs +2 -2
  89. package/dist/Form.module.js +2 -2
  90. package/dist/Form.module.js.map +1 -1
  91. package/dist/GridList.main.js +16 -13
  92. package/dist/GridList.main.js.map +1 -1
  93. package/dist/GridList.mjs +17 -14
  94. package/dist/GridList.module.js +17 -14
  95. package/dist/GridList.module.js.map +1 -1
  96. package/dist/Group.main.js +1 -1
  97. package/dist/Group.main.js.map +1 -1
  98. package/dist/Group.mjs +2 -2
  99. package/dist/Group.module.js +2 -2
  100. package/dist/Group.module.js.map +1 -1
  101. package/dist/Header.main.js +1 -1
  102. package/dist/Header.main.js.map +1 -1
  103. package/dist/Header.mjs +2 -2
  104. package/dist/Header.module.js +2 -2
  105. package/dist/Header.module.js.map +1 -1
  106. package/dist/Heading.main.js +2 -2
  107. package/dist/Heading.main.js.map +1 -1
  108. package/dist/Heading.mjs +2 -2
  109. package/dist/Heading.module.js +2 -2
  110. package/dist/Heading.module.js.map +1 -1
  111. package/dist/HiddenDateInput.main.js +5 -1
  112. package/dist/HiddenDateInput.main.js.map +1 -1
  113. package/dist/HiddenDateInput.mjs +6 -2
  114. package/dist/HiddenDateInput.module.js +6 -2
  115. package/dist/HiddenDateInput.module.js.map +1 -1
  116. package/dist/Input.main.js +1 -1
  117. package/dist/Input.main.js.map +1 -1
  118. package/dist/Input.mjs +2 -2
  119. package/dist/Input.module.js +2 -2
  120. package/dist/Input.module.js.map +1 -1
  121. package/dist/Keyboard.main.js +1 -1
  122. package/dist/Keyboard.main.js.map +1 -1
  123. package/dist/Keyboard.mjs +2 -2
  124. package/dist/Keyboard.module.js +2 -2
  125. package/dist/Keyboard.module.js.map +1 -1
  126. package/dist/Label.main.js +2 -1
  127. package/dist/Label.main.js.map +1 -1
  128. package/dist/Label.mjs +3 -2
  129. package/dist/Label.module.js +3 -2
  130. package/dist/Label.module.js.map +1 -1
  131. package/dist/Link.main.js +3 -2
  132. package/dist/Link.main.js.map +1 -1
  133. package/dist/Link.mjs +4 -3
  134. package/dist/Link.module.js +4 -3
  135. package/dist/Link.module.js.map +1 -1
  136. package/dist/ListBox.main.js +13 -14
  137. package/dist/ListBox.main.js.map +1 -1
  138. package/dist/ListBox.mjs +14 -15
  139. package/dist/ListBox.module.js +14 -15
  140. package/dist/ListBox.module.js.map +1 -1
  141. package/dist/Menu.main.js +21 -8
  142. package/dist/Menu.main.js.map +1 -1
  143. package/dist/Menu.mjs +22 -9
  144. package/dist/Menu.module.js +22 -9
  145. package/dist/Menu.module.js.map +1 -1
  146. package/dist/Meter.main.js +1 -1
  147. package/dist/Meter.main.js.map +1 -1
  148. package/dist/Meter.mjs +2 -2
  149. package/dist/Meter.module.js +2 -2
  150. package/dist/Meter.module.js.map +1 -1
  151. package/dist/Modal.main.js +2 -2
  152. package/dist/Modal.main.js.map +1 -1
  153. package/dist/Modal.mjs +3 -3
  154. package/dist/Modal.module.js +3 -3
  155. package/dist/Modal.module.js.map +1 -1
  156. package/dist/NumberField.main.js +1 -1
  157. package/dist/NumberField.main.js.map +1 -1
  158. package/dist/NumberField.mjs +2 -2
  159. package/dist/NumberField.module.js +2 -2
  160. package/dist/NumberField.module.js.map +1 -1
  161. package/dist/OverlayArrow.main.js +1 -1
  162. package/dist/OverlayArrow.main.js.map +1 -1
  163. package/dist/OverlayArrow.mjs +2 -2
  164. package/dist/OverlayArrow.module.js +2 -2
  165. package/dist/OverlayArrow.module.js.map +1 -1
  166. package/dist/Popover.main.js +2 -2
  167. package/dist/Popover.main.js.map +1 -1
  168. package/dist/Popover.mjs +4 -4
  169. package/dist/Popover.module.js +4 -4
  170. package/dist/Popover.module.js.map +1 -1
  171. package/dist/ProgressBar.main.js +1 -1
  172. package/dist/ProgressBar.main.js.map +1 -1
  173. package/dist/ProgressBar.mjs +2 -2
  174. package/dist/ProgressBar.module.js +2 -2
  175. package/dist/ProgressBar.module.js.map +1 -1
  176. package/dist/RadioGroup.main.js +2 -2
  177. package/dist/RadioGroup.main.js.map +1 -1
  178. package/dist/RadioGroup.mjs +3 -3
  179. package/dist/RadioGroup.module.js +3 -3
  180. package/dist/RadioGroup.module.js.map +1 -1
  181. package/dist/SearchField.main.js +1 -1
  182. package/dist/SearchField.main.js.map +1 -1
  183. package/dist/SearchField.mjs +2 -2
  184. package/dist/SearchField.module.js +2 -2
  185. package/dist/SearchField.module.js.map +1 -1
  186. package/dist/Select.main.js +2 -2
  187. package/dist/Select.main.js.map +1 -1
  188. package/dist/Select.mjs +3 -3
  189. package/dist/Select.module.js +3 -3
  190. package/dist/Select.module.js.map +1 -1
  191. package/dist/Separator.main.js +3 -1
  192. package/dist/Separator.main.js.map +1 -1
  193. package/dist/Separator.mjs +4 -2
  194. package/dist/Separator.module.js +4 -2
  195. package/dist/Separator.module.js.map +1 -1
  196. package/dist/SharedElementTransition.main.js +3 -2
  197. package/dist/SharedElementTransition.main.js.map +1 -1
  198. package/dist/SharedElementTransition.mjs +4 -3
  199. package/dist/SharedElementTransition.module.js +4 -3
  200. package/dist/SharedElementTransition.module.js.map +1 -1
  201. package/dist/Slider.main.js +6 -5
  202. package/dist/Slider.main.js.map +1 -1
  203. package/dist/Slider.mjs +7 -6
  204. package/dist/Slider.module.js +7 -6
  205. package/dist/Slider.module.js.map +1 -1
  206. package/dist/Switch.main.js +1 -1
  207. package/dist/Switch.main.js.map +1 -1
  208. package/dist/Switch.mjs +2 -2
  209. package/dist/Switch.module.js +2 -2
  210. package/dist/Switch.module.js.map +1 -1
  211. package/dist/Table.main.js +30 -25
  212. package/dist/Table.main.js.map +1 -1
  213. package/dist/Table.mjs +31 -26
  214. package/dist/Table.module.js +31 -26
  215. package/dist/Table.module.js.map +1 -1
  216. package/dist/Tabs.main.js +13 -6
  217. package/dist/Tabs.main.js.map +1 -1
  218. package/dist/Tabs.mjs +14 -7
  219. package/dist/Tabs.module.js +14 -7
  220. package/dist/Tabs.module.js.map +1 -1
  221. package/dist/TagGroup.main.js +6 -5
  222. package/dist/TagGroup.main.js.map +1 -1
  223. package/dist/TagGroup.mjs +7 -6
  224. package/dist/TagGroup.module.js +7 -6
  225. package/dist/TagGroup.module.js.map +1 -1
  226. package/dist/Text.main.js +2 -1
  227. package/dist/Text.main.js.map +1 -1
  228. package/dist/Text.mjs +3 -2
  229. package/dist/Text.module.js +3 -2
  230. package/dist/Text.module.js.map +1 -1
  231. package/dist/TextArea.main.js +1 -1
  232. package/dist/TextArea.main.js.map +1 -1
  233. package/dist/TextArea.mjs +2 -2
  234. package/dist/TextArea.module.js +2 -2
  235. package/dist/TextArea.module.js.map +1 -1
  236. package/dist/TextField.main.js +1 -1
  237. package/dist/TextField.main.js.map +1 -1
  238. package/dist/TextField.mjs +2 -2
  239. package/dist/TextField.module.js +2 -2
  240. package/dist/TextField.module.js.map +1 -1
  241. package/dist/Toast.main.js +6 -4
  242. package/dist/Toast.main.js.map +1 -1
  243. package/dist/Toast.mjs +7 -5
  244. package/dist/Toast.module.js +7 -5
  245. package/dist/Toast.module.js.map +1 -1
  246. package/dist/ToggleButton.main.js +5 -2
  247. package/dist/ToggleButton.main.js.map +1 -1
  248. package/dist/ToggleButton.mjs +6 -3
  249. package/dist/ToggleButton.module.js +6 -3
  250. package/dist/ToggleButton.module.js.map +1 -1
  251. package/dist/ToggleButtonGroup.main.js +1 -1
  252. package/dist/ToggleButtonGroup.main.js.map +1 -1
  253. package/dist/ToggleButtonGroup.mjs +2 -2
  254. package/dist/ToggleButtonGroup.module.js +2 -2
  255. package/dist/ToggleButtonGroup.module.js.map +1 -1
  256. package/dist/Toolbar.main.js +1 -1
  257. package/dist/Toolbar.main.js.map +1 -1
  258. package/dist/Toolbar.mjs +2 -2
  259. package/dist/Toolbar.module.js +2 -2
  260. package/dist/Toolbar.module.js.map +1 -1
  261. package/dist/Tooltip.main.js +1 -1
  262. package/dist/Tooltip.main.js.map +1 -1
  263. package/dist/Tooltip.mjs +2 -2
  264. package/dist/Tooltip.module.js +2 -2
  265. package/dist/Tooltip.module.js.map +1 -1
  266. package/dist/Tree.main.js +6 -6
  267. package/dist/Tree.main.js.map +1 -1
  268. package/dist/Tree.mjs +7 -7
  269. package/dist/Tree.module.js +7 -7
  270. package/dist/Tree.module.js.map +1 -1
  271. package/dist/types.d.ts +122 -63
  272. package/dist/types.d.ts.map +1 -1
  273. package/dist/utils.main.js +41 -3
  274. package/dist/utils.main.js.map +1 -1
  275. package/dist/utils.mjs +42 -5
  276. package/dist/utils.module.js +42 -5
  277. package/dist/utils.module.js.map +1 -1
  278. package/package.json +24 -24
  279. package/src/Breadcrumbs.tsx +9 -6
  280. package/src/Button.tsx +4 -3
  281. package/src/Calendar.tsx +26 -20
  282. package/src/Checkbox.tsx +7 -6
  283. package/src/ColorArea.tsx +3 -2
  284. package/src/ColorField.tsx +18 -3
  285. package/src/ColorSlider.tsx +2 -1
  286. package/src/ColorSwatch.tsx +2 -1
  287. package/src/ColorSwatchPicker.tsx +2 -0
  288. package/src/ColorThumb.tsx +3 -3
  289. package/src/ColorWheel.tsx +4 -3
  290. package/src/ComboBox.tsx +3 -2
  291. package/src/DateField.tsx +5 -4
  292. package/src/DatePicker.tsx +3 -2
  293. package/src/Dialog.tsx +5 -4
  294. package/src/Disclosure.tsx +7 -6
  295. package/src/DropZone.tsx +5 -5
  296. package/src/Form.tsx +4 -4
  297. package/src/GridList.tsx +30 -23
  298. package/src/Group.tsx +10 -9
  299. package/src/Header.tsx +7 -5
  300. package/src/Heading.tsx +4 -4
  301. package/src/HiddenDateInput.tsx +10 -3
  302. package/src/Input.tsx +3 -2
  303. package/src/Keyboard.tsx +4 -2
  304. package/src/Label.tsx +4 -3
  305. package/src/Link.tsx +15 -12
  306. package/src/ListBox.tsx +23 -22
  307. package/src/Menu.tsx +32 -17
  308. package/src/Meter.tsx +3 -2
  309. package/src/Modal.tsx +5 -4
  310. package/src/NumberField.tsx +2 -1
  311. package/src/OverlayArrow.tsx +3 -2
  312. package/src/Popover.tsx +5 -4
  313. package/src/ProgressBar.tsx +3 -2
  314. package/src/RadioGroup.tsx +6 -5
  315. package/src/SearchField.tsx +3 -2
  316. package/src/Select.tsx +6 -5
  317. package/src/Separator.tsx +8 -5
  318. package/src/SharedElementTransition.tsx +4 -3
  319. package/src/Slider.tsx +9 -7
  320. package/src/Switch.tsx +11 -10
  321. package/src/Table.tsx +47 -36
  322. package/src/Tabs.tsx +23 -18
  323. package/src/TagGroup.tsx +16 -13
  324. package/src/Text.tsx +4 -3
  325. package/src/TextArea.tsx +3 -2
  326. package/src/TextField.tsx +4 -3
  327. package/src/Toast.tsx +15 -11
  328. package/src/ToggleButton.tsx +5 -4
  329. package/src/ToggleButtonGroup.tsx +3 -2
  330. package/src/Toolbar.tsx +3 -2
  331. package/src/Tooltip.tsx +3 -2
  332. package/src/Tree.tsx +18 -17
  333. package/src/utils.tsx +97 -11
package/src/GridList.tsx CHANGED
@@ -16,6 +16,9 @@ import {
16
16
  ClassNameOrFunction,
17
17
  ContextValue,
18
18
  DEFAULT_SLOT,
19
+ dom,
20
+ DOMProps,
21
+ DOMRenderProps,
19
22
  Provider,
20
23
  RenderProps,
21
24
  SlotProps,
@@ -156,7 +159,8 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}:
156
159
  // Only tab navigation is supported in grid layout.
157
160
  keyboardNavigationBehavior: layout === 'grid' ? 'tab' : keyboardNavigationBehavior,
158
161
  isVirtualized,
159
- shouldSelectOnPressUp: props.shouldSelectOnPressUp
162
+ shouldSelectOnPressUp: props.shouldSelectOnPressUp,
163
+ disallowTypeAhead
160
164
  }, filteredState, ref);
161
165
 
162
166
  let selectionManager = filteredState.selectionManager;
@@ -229,8 +233,8 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}:
229
233
  state: filteredState
230
234
  };
231
235
  let renderProps = useRenderProps({
232
- className: props.className,
233
- style: props.style,
236
+ ...props,
237
+ children: undefined,
234
238
  defaultClassName: 'react-aria-GridList',
235
239
  values: renderValues
236
240
  });
@@ -253,7 +257,7 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}:
253
257
 
254
258
  return (
255
259
  <FocusScope>
256
- <div
260
+ <dom.div
257
261
  {...mergeProps(DOMProps, renderProps, gridProps, focusProps, droppableCollection?.collectionProps, emptyStatePropOverrides)}
258
262
  ref={ref as RefObject<HTMLDivElement>}
259
263
  slot={props.slot || undefined}
@@ -280,7 +284,7 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}:
280
284
  </Provider>
281
285
  {emptyState}
282
286
  {dragPreview}
283
- </div>
287
+ </dom.div>
284
288
  </FocusScope>
285
289
  );
286
290
  }
@@ -400,7 +404,7 @@ export const GridListItem = /*#__PURE__*/ createLeafComponent(ItemNode, function
400
404
  </div>
401
405
  </div>
402
406
  }
403
- <div
407
+ <dom.div
404
408
  {...mergeProps(DOMProps, renderProps, rowProps, focusProps, hoverProps, draggableItem?.dragProps)}
405
409
  ref={ref}
406
410
  data-selected={states.isSelected || undefined}
@@ -449,7 +453,7 @@ export const GridListItem = /*#__PURE__*/ createLeafComponent(ItemNode, function
449
453
  {renderProps.children}
450
454
  </Provider>
451
455
  </div>
452
- </div>
456
+ </dom.div>
453
457
  </>
454
458
  );
455
459
  });
@@ -497,7 +501,7 @@ function GridListDropIndicator(props: GridListDropIndicatorProps, ref: Forwarded
497
501
  });
498
502
 
499
503
  return (
500
- <div
504
+ <dom.div
501
505
  {...renderProps}
502
506
  role="row"
503
507
  ref={ref as RefObject<HTMLDivElement | null>}
@@ -506,7 +510,7 @@ function GridListDropIndicator(props: GridListDropIndicatorProps, ref: Forwarded
506
510
  <div {...visuallyHiddenProps} role="button" {...dropIndicatorProps} ref={buttonRef} />
507
511
  {renderProps.children}
508
512
  </div>
509
- </div>
513
+ </dom.div>
510
514
  );
511
515
  }
512
516
 
@@ -534,7 +538,7 @@ function RootDropIndicator() {
534
538
  );
535
539
  }
536
540
 
537
- export interface GridListLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, GlobalDOMAttributes<HTMLDivElement> {
541
+ export interface GridListLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
538
542
  /**
539
543
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
540
544
  * @default 'react-aria-GridListLoadMoreItem'
@@ -569,7 +573,7 @@ export const GridListLoadMoreItem = createLeafComponent(LoaderNode, function Gri
569
573
  id: undefined,
570
574
  children: item.rendered,
571
575
  defaultClassName: 'react-aria-GridListLoadingIndicator',
572
- values: null
576
+ values: undefined
573
577
  });
574
578
  // For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable
575
579
  // Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the
@@ -583,7 +587,7 @@ export const GridListLoadMoreItem = createLeafComponent(LoaderNode, function Gri
583
587
  <div data-testid="loadMoreSentinel" ref={sentinelRef} style={{position: 'absolute', height: 1, width: 1}} />
584
588
  </div>
585
589
  {isLoading && renderProps.children && (
586
- <div
590
+ <dom.div
587
591
  {...renderProps}
588
592
  {...filterDOMProps(props, {global: true})}
589
593
  role="row"
@@ -593,13 +597,13 @@ export const GridListLoadMoreItem = createLeafComponent(LoaderNode, function Gri
593
597
  role="gridcell">
594
598
  {renderProps.children}
595
599
  </div>
596
- </div>
600
+ </dom.div>
597
601
  )}
598
602
  </>
599
603
  );
600
604
  });
601
605
 
602
- export interface GridListSectionProps<T> extends SectionProps<T> {
606
+ export interface GridListSectionProps<T> extends SectionProps<T>, DOMRenderProps<'div', undefined> {
603
607
  /**
604
608
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
605
609
  * @default 'react-aria-GridListSection'
@@ -619,17 +623,18 @@ export const GridListSection = /*#__PURE__*/ createBranchComponent(SectionNode,
619
623
  'aria-label': props['aria-label'] ?? undefined
620
624
  }, state, ref);
621
625
  let renderProps = useRenderProps({
626
+ ...props,
627
+ id: undefined,
628
+ children: undefined,
622
629
  defaultClassName: 'react-aria-GridListSection',
623
- className: props.className,
624
- style: props.style,
625
- values: {}
630
+ values: undefined
626
631
  });
627
632
 
628
633
  let DOMProps = filterDOMProps(props as any, {global: true});
629
634
  delete DOMProps.id;
630
635
 
631
636
  return (
632
- <div
637
+ <dom.div
633
638
  {...mergeProps(DOMProps, renderProps, rowGroupProps)}
634
639
  ref={ref}>
635
640
  <Provider
@@ -641,22 +646,24 @@ export const GridListSection = /*#__PURE__*/ createBranchComponent(SectionNode,
641
646
  collection={state.collection}
642
647
  parent={item} />
643
648
  </Provider>
644
- </div>
649
+ </dom.div>
645
650
  );
646
651
  });
647
652
 
648
- export const GridListHeaderContext = createContext<ContextValue<HTMLAttributes<HTMLDivElement>, HTMLDivElement>>({});
653
+ export interface GridListHeaderProps extends DOMRenderProps<'div', undefined>, DOMProps, GlobalDOMAttributes<HTMLElement> {}
654
+
655
+ export const GridListHeaderContext = createContext<ContextValue<GridListHeaderProps, HTMLDivElement>>({});
649
656
  const GridListHeaderInnerContext = createContext<HTMLAttributes<HTMLElement> | null>(null);
650
657
 
651
- export const GridListHeader = /*#__PURE__*/ createLeafComponent(HeaderNode, function Header(props: HTMLAttributes<HTMLElement>, ref: ForwardedRef<HTMLDivElement>) {
658
+ export const GridListHeader = /*#__PURE__*/ createLeafComponent(HeaderNode, function Header(props: GridListHeaderProps, ref: ForwardedRef<HTMLDivElement>) {
652
659
  [props, ref] = useContextProps(props, ref, GridListHeaderContext);
653
660
  let rowHeaderProps = useContext(GridListHeaderInnerContext);
654
661
 
655
662
  return (
656
- <div className="react-aria-GridListHeader" ref={ref} {...props}>
663
+ <dom.div render={props.render} className="react-aria-GridListHeader" ref={ref} {...props}>
657
664
  <div {...rowHeaderProps} style={{display: 'contents'}}>
658
665
  {props.children}
659
666
  </div>
660
- </div>
667
+ </dom.div>
661
668
  );
662
669
  });
package/src/Group.tsx CHANGED
@@ -12,12 +12,13 @@
12
12
 
13
13
  import {AriaLabelingProps, DOMProps, forwardRefType} from '@react-types/shared';
14
14
  import {
15
- ClassNameOrFunction,
16
- ContextValue,
17
- RenderProps,
18
- SlotProps,
19
- useContextProps,
20
- useRenderProps
15
+ ClassNameOrFunction,
16
+ ContextValue,
17
+ dom,
18
+ RenderProps,
19
+ SlotProps,
20
+ useContextProps,
21
+ useRenderProps
21
22
  } from './utils';
22
23
  import {HoverProps, mergeProps, useFocusRing, useHover} from 'react-aria';
23
24
  import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes} from 'react';
@@ -50,7 +51,7 @@ export interface GroupRenderProps {
50
51
  isInvalid: boolean
51
52
  }
52
53
 
53
- export interface GroupProps extends AriaLabelingProps, Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'style' | 'role' | 'slot'>, DOMProps, HoverProps, RenderProps<GroupRenderProps>, SlotProps {
54
+ export interface GroupProps extends AriaLabelingProps, Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'style' | 'render' | 'role' | 'slot'>, DOMProps, HoverProps, RenderProps<GroupRenderProps>, SlotProps {
54
55
  /**
55
56
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
56
57
  * @default 'react-aria-Group'
@@ -95,7 +96,7 @@ export const Group = /*#__PURE__*/ (forwardRef as forwardRefType)(function Group
95
96
  });
96
97
 
97
98
  return (
98
- <div
99
+ <dom.div
99
100
  {...mergeProps(otherProps, focusProps, hoverProps)}
100
101
  {...renderProps}
101
102
  ref={ref}
@@ -108,6 +109,6 @@ export const Group = /*#__PURE__*/ (forwardRef as forwardRefType)(function Group
108
109
  data-invalid={isInvalid || undefined}
109
110
  data-readonly={isReadOnly || undefined}>
110
111
  {renderProps.children}
111
- </div>
112
+ </dom.div>
112
113
  );
113
114
  });
package/src/Header.tsx CHANGED
@@ -10,17 +10,19 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import {ContextValue, useContextProps} from './utils';
13
+ import {ContextValue, dom, DOMRenderProps, useContextProps} from './utils';
14
14
  import {createLeafComponent, HeaderNode} from '@react-aria/collections';
15
15
  import React, {createContext, ForwardedRef, HTMLAttributes} from 'react';
16
16
 
17
- export const HeaderContext = createContext<ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>>({});
17
+ export interface HeaderProps extends HTMLAttributes<HTMLElement>, DOMRenderProps<'header', undefined> {}
18
18
 
19
- export const Header = /*#__PURE__*/ createLeafComponent(HeaderNode, function Header(props: HTMLAttributes<HTMLElement>, ref: ForwardedRef<HTMLElement>) {
19
+ export const HeaderContext = createContext<ContextValue<HeaderProps, HTMLElement>>({});
20
+
21
+ export const Header = /*#__PURE__*/ createLeafComponent(HeaderNode, function Header(props: HeaderProps, ref: ForwardedRef<HTMLElement>) {
20
22
  [props, ref] = useContextProps(props, ref, HeaderContext);
21
23
  return (
22
- <header className="react-aria-Header" {...props} ref={ref}>
24
+ <dom.header className="react-aria-Header" {...props} ref={ref}>
23
25
  {props.children}
24
- </header>
26
+ </dom.header>
25
27
  );
26
28
  });
package/src/Heading.tsx CHANGED
@@ -10,18 +10,18 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
+ import {dom, DOMRenderProps, useContextProps} from './utils';
13
14
  import {HeadingContext} from './RSPContexts';
14
- import React, {ElementType, ForwardedRef, forwardRef, HTMLAttributes} from 'react';
15
- import {useContextProps} from './utils';
15
+ import React, {ForwardedRef, forwardRef, HTMLAttributes} from 'react';
16
16
 
17
- export interface HeadingProps extends HTMLAttributes<HTMLElement> {
17
+ export interface HeadingProps extends HTMLAttributes<HTMLElement>, DOMRenderProps<'h1', undefined> {
18
18
  level?: number
19
19
  }
20
20
 
21
21
  export const Heading = forwardRef(function Heading(props: HeadingProps, ref: ForwardedRef<HTMLHeadingElement>) {
22
22
  [props, ref] = useContextProps(props, ref, HeadingContext);
23
23
  let {children, level = 3, className, ...domProps} = props;
24
- let Element = `h${level}` as ElementType;
24
+ let Element = dom[`h${level}`];
25
25
 
26
26
  return (
27
27
  <Element {...domProps} ref={ref} className={className ?? 'react-aria-Heading'}>
@@ -11,7 +11,7 @@
11
11
  */
12
12
 
13
13
 
14
- import {CalendarDate, CalendarDateTime, parseDate, parseDateTime} from '@internationalized/date';
14
+ import {CalendarDate, CalendarDateTime, parseDate, parseDateTime, toCalendarDate, toCalendarDateTime, toLocalTimeZone} from '@internationalized/date';
15
15
  import {DateFieldState, DatePickerState, DateSegmentType} from 'react-stately';
16
16
  import React, {ReactNode} from 'react';
17
17
  import {useVisuallyHidden} from 'react-aria';
@@ -65,8 +65,15 @@ export function useHiddenDateInput(props: HiddenDateInputProps, state: DateField
65
65
  } else if (state.granularity === 'hour') {
66
66
  inputStep = 3600;
67
67
  }
68
-
69
- let dateValue = state.value == null ? '' : state.value.toString();
68
+
69
+ let dateValue = '';
70
+ if (state.value) {
71
+ if (state.granularity === 'day') {
72
+ dateValue = toCalendarDate(state.value).toString();
73
+ } else {
74
+ dateValue = toCalendarDateTime('timeZone' in state.value ? toLocalTimeZone(state.value) : state.value).toString();
75
+ }
76
+ }
70
77
 
71
78
  let inputType = state.granularity === 'day' ? 'date' : 'datetime-local';
72
79
 
package/src/Input.tsx CHANGED
@@ -13,6 +13,7 @@
13
13
  import {
14
14
  ClassNameOrFunction,
15
15
  ContextValue,
16
+ dom,
16
17
  StyleRenderProps,
17
18
  useContextProps,
18
19
  useRenderProps
@@ -49,7 +50,7 @@ export interface InputRenderProps {
49
50
  isInvalid: boolean
50
51
  }
51
52
 
52
- export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'>, HoverEvents, StyleRenderProps<InputRenderProps> {
53
+ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'>, HoverEvents, StyleRenderProps<InputRenderProps, 'input'> {
53
54
  /**
54
55
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
55
56
  * @default 'react-aria-Input'
@@ -99,7 +100,7 @@ export const Input = /*#__PURE__*/ createHideableComponent(function Input(props:
99
100
  });
100
101
 
101
102
  return (
102
- <input
103
+ <dom.input
103
104
  {...mergeProps(filterHoverProps(props), focusProps, hoverProps)}
104
105
  {...renderProps}
105
106
  ref={ref}
package/src/Keyboard.tsx CHANGED
@@ -10,12 +10,14 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import {ContextValue, useContextProps} from './utils';
13
+ import {ContextValue, dom, DOMRenderProps, useContextProps} from './utils';
14
14
  import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes} from 'react';
15
15
 
16
+ export interface KeyboardProps extends HTMLAttributes<HTMLElement>, DOMRenderProps<'kbd', undefined> {}
17
+
16
18
  export const KeyboardContext = createContext<ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>>({});
17
19
 
18
20
  export const Keyboard = forwardRef(function Keyboard(props: HTMLAttributes<HTMLElement>, ref: ForwardedRef<HTMLElement>) {
19
21
  [props, ref] = useContextProps(props, ref, KeyboardContext);
20
- return <kbd dir="ltr" {...props} ref={ref} />;
22
+ return <dom.kbd dir="ltr" {...props} ref={ref} />;
21
23
  });
package/src/Label.tsx CHANGED
@@ -10,11 +10,11 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import {ContextValue, useContextProps} from './utils';
13
+ import {ContextValue, dom, DOMRenderProps, useContextProps} from './utils';
14
14
  import {createHideableComponent} from '@react-aria/collections';
15
15
  import React, {createContext, ForwardedRef, LabelHTMLAttributes} from 'react';
16
16
 
17
- export interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
17
+ export interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement>, DOMRenderProps<'label', undefined> {
18
18
  elementType?: string
19
19
  }
20
20
 
@@ -22,7 +22,8 @@ export const LabelContext = createContext<ContextValue<LabelProps, HTMLLabelElem
22
22
 
23
23
  export const Label = /*#__PURE__*/ createHideableComponent(function Label(props: LabelProps, ref: ForwardedRef<HTMLLabelElement>) {
24
24
  [props, ref] = useContextProps(props, ref, LabelContext);
25
- let {elementType: ElementType = 'label', ...labelProps} = props;
25
+ let {elementType = 'label', ...labelProps} = props;
26
+ let ElementType = dom[elementType];
26
27
  // @ts-ignore
27
28
  return <ElementType className="react-aria-Label" {...labelProps} ref={ref} />;
28
29
  });
package/src/Link.tsx CHANGED
@@ -12,18 +12,20 @@
12
12
 
13
13
  import {AriaLinkOptions, HoverEvents, mergeProps, useFocusRing, useHover, useLink} from 'react-aria';
14
14
  import {
15
- ClassNameOrFunction,
16
- ContextValue,
17
- RenderProps,
18
- SlotProps,
19
- useContextProps,
20
- useRenderProps
15
+ ClassNameOrFunction,
16
+ ContextValue,
17
+ dom,
18
+ PossibleLinkDOMRenderProps,
19
+ RenderProps,
20
+ SlotProps,
21
+ useContextProps,
22
+ useRenderProps
21
23
  } from './utils';
24
+ import {DOMProps, forwardRefType, GlobalDOMAttributes} from '@react-types/shared';
22
25
  import {filterDOMProps} from '@react-aria/utils';
23
- import {forwardRefType, GlobalDOMAttributes} from '@react-types/shared';
24
- import React, {createContext, ElementType, ForwardedRef, forwardRef} from 'react';
26
+ import React, {createContext, ForwardedRef, forwardRef} from 'react';
25
27
 
26
- export interface LinkProps extends Omit<AriaLinkOptions, 'elementType'>, HoverEvents, RenderProps<LinkRenderProps>, SlotProps, Omit<GlobalDOMAttributes<HTMLAnchorElement>, 'onClick'> {
28
+ export interface LinkProps extends Omit<AriaLinkOptions, 'elementType'>, HoverEvents, Omit<RenderProps<LinkRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'span', LinkRenderProps>, SlotProps, DOMProps, Omit<GlobalDOMAttributes<HTMLAnchorElement>, 'onClick'> {
27
29
  /**
28
30
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
29
31
  * @default 'react-aria-Link'
@@ -73,13 +75,14 @@ export const LinkContext = createContext<ContextValue<LinkProps, HTMLAnchorEleme
73
75
  export const Link = /*#__PURE__*/ (forwardRef as forwardRefType)(function Link(props: LinkProps, ref: ForwardedRef<HTMLAnchorElement>) {
74
76
  [props, ref] = useContextProps(props, ref, LinkContext);
75
77
 
76
- let ElementType: ElementType = props.href && !props.isDisabled ? 'a' : 'span';
77
- let {linkProps, isPressed} = useLink({...props, elementType: ElementType}, ref);
78
+ let elementType = props.href && !props.isDisabled ? 'a' : 'span';
79
+ let {linkProps, isPressed} = useLink({...props, elementType}, ref);
80
+ let ElementType = dom[elementType];
78
81
 
79
82
  let {hoverProps, isHovered} = useHover(props);
80
83
  let {focusProps, isFocused, isFocusVisible} = useFocusRing();
81
84
 
82
- let renderProps = useRenderProps({
85
+ let renderProps = useRenderProps<LinkRenderProps, 'span' | 'a'>({
83
86
  ...props,
84
87
  defaultClassName: 'react-aria-Link',
85
88
  values: {
package/src/ListBox.tsx CHANGED
@@ -15,6 +15,9 @@ import {
15
15
  ClassNameOrFunction,
16
16
  ContextValue,
17
17
  DEFAULT_SLOT,
18
+ dom,
19
+ DOMRenderProps,
20
+ PossibleLinkDOMRenderProps,
18
21
  Provider,
19
22
  RenderProps,
20
23
  SlotProps,
@@ -231,8 +234,8 @@ function ListBoxInner<T extends object>({state: inputState, props, listBoxRef}:
231
234
  state
232
235
  };
233
236
  let renderProps = useRenderProps({
234
- className: props.className,
235
- style: props.style,
237
+ ...props,
238
+ children: undefined,
236
239
  defaultClassName: 'react-aria-ListBox',
237
240
  values: renderValues
238
241
  });
@@ -253,7 +256,7 @@ function ListBoxInner<T extends object>({state: inputState, props, listBoxRef}:
253
256
 
254
257
  return (
255
258
  <FocusScope>
256
- <div
259
+ <dom.div
257
260
  {...mergeProps(DOMProps, renderProps, listBoxProps, focusProps, droppableCollection?.collectionProps)}
258
261
  ref={listBoxRef as RefObject<HTMLDivElement>}
259
262
  slot={props.slot || undefined}
@@ -283,12 +286,12 @@ function ListBoxInner<T extends object>({state: inputState, props, listBoxRef}:
283
286
  </Provider>
284
287
  {emptyState}
285
288
  {dragPreview}
286
- </div>
289
+ </dom.div>
287
290
  </FocusScope>
288
291
  );
289
292
  }
290
293
 
291
- export interface ListBoxSectionProps<T> extends SectionProps<T> {
294
+ export interface ListBoxSectionProps<T> extends SectionProps<T>, DOMRenderProps<'section', undefined> {
292
295
  /**
293
296
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
294
297
  * @default 'react-aria-ListBoxSection'
@@ -306,17 +309,18 @@ function ListBoxSectionInner<T extends object>(props: ListBoxSectionProps<T>, re
306
309
  'aria-label': props['aria-label'] ?? undefined
307
310
  });
308
311
  let renderProps = useRenderProps({
312
+ ...props,
313
+ id: undefined,
314
+ children: undefined,
309
315
  defaultClassName: className,
310
- className: props.className,
311
- style: props.style,
312
- values: {}
316
+ values: undefined
313
317
  });
314
318
 
315
319
  let DOMProps = filterDOMProps(props as any, {global: true});
316
320
  delete DOMProps.id;
317
321
 
318
322
  return (
319
- <section
323
+ <dom.section
320
324
  {...mergeProps(DOMProps, renderProps, groupProps)}
321
325
  ref={ref}>
322
326
  <HeaderContext.Provider value={{...headingProps, ref: headingRef}}>
@@ -325,7 +329,7 @@ function ListBoxSectionInner<T extends object>(props: ListBoxSectionProps<T>, re
325
329
  parent={section}
326
330
  renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />
327
331
  </HeaderContext.Provider>
328
- </section>
332
+ </dom.section>
329
333
  );
330
334
  }
331
335
 
@@ -336,7 +340,7 @@ export const ListBoxSection = /*#__PURE__*/ createBranchComponent(SectionNode, L
336
340
 
337
341
  export interface ListBoxItemRenderProps extends ItemRenderProps {}
338
342
 
339
- export interface ListBoxItemProps<T = object> extends RenderProps<ListBoxItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, FocusEvents<HTMLDivElement>, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
343
+ export interface ListBoxItemProps<T = object> extends Omit<RenderProps<ListBoxItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', ListBoxItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, FocusEvents<HTMLDivElement>, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
340
344
  /**
341
345
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
342
346
  * @default 'react-aria-ListBoxItem'
@@ -394,7 +398,7 @@ export const ListBoxItem = /*#__PURE__*/ createLeafComponent(ItemNode, function
394
398
  }
395
399
 
396
400
  let isDragging = dragState && dragState.isDragging(item.key);
397
- let renderProps = useRenderProps({
401
+ let renderProps = useRenderProps<ListBoxItemRenderProps, any>({
398
402
  ...props,
399
403
  id: undefined,
400
404
  children: props.children,
@@ -416,13 +420,12 @@ export const ListBoxItem = /*#__PURE__*/ createLeafComponent(ItemNode, function
416
420
  }
417
421
  }, [item.textValue]);
418
422
 
419
- let ElementType: React.ElementType = props.href ? 'a' : 'div';
420
-
423
+ let ElementType = props.href ? dom.a : dom.div;
421
424
  let DOMProps = filterDOMProps(props as any, {global: true});
422
425
  delete DOMProps.id;
423
426
  delete DOMProps.onClick;
424
427
 
425
- if (ElementType === 'a' && optionProps.tabIndex == null) {
428
+ if (props.href && optionProps.tabIndex == null) {
426
429
  optionProps.tabIndex = -1;
427
430
  }
428
431
 
@@ -496,10 +499,9 @@ function ListBoxDropIndicator(props: ListBoxDropIndicatorProps, ref: ForwardedRe
496
499
  });
497
500
 
498
501
  return (
499
- <div
502
+ <dom.div
500
503
  {...dropIndicatorProps}
501
504
  {...renderProps}
502
- // eslint-disable-next-line
503
505
  role="option"
504
506
  ref={ref as RefObject<HTMLDivElement | null>}
505
507
  data-drop-target={isDropTarget || undefined} />
@@ -508,7 +510,7 @@ function ListBoxDropIndicator(props: ListBoxDropIndicatorProps, ref: ForwardedRe
508
510
 
509
511
  const ListBoxDropIndicatorForwardRef = forwardRef(ListBoxDropIndicator);
510
512
 
511
- export interface ListBoxLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, GlobalDOMAttributes<HTMLDivElement> {
513
+ export interface ListBoxLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
512
514
  /**
513
515
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
514
516
  * @default 'react-aria-ListBoxLoadMoreItem'
@@ -541,7 +543,7 @@ export const ListBoxLoadMoreItem = createLeafComponent(LoaderNode, function List
541
543
  id: undefined,
542
544
  children: item.rendered,
543
545
  defaultClassName: 'react-aria-ListBoxLoadingIndicator',
544
- values: null
546
+ values: undefined
545
547
  });
546
548
 
547
549
  let optionProps = {
@@ -560,15 +562,14 @@ export const ListBoxLoadMoreItem = createLeafComponent(LoaderNode, function List
560
562
  <div data-testid="loadMoreSentinel" ref={sentinelRef} style={{position: 'absolute', height: 1, width: 1}} />
561
563
  </div>
562
564
  {isLoading && renderProps.children && (
563
- <div
565
+ <dom.div
564
566
  {...mergeProps(filterDOMProps(props, {global: true}), optionProps)}
565
567
  {...renderProps}
566
568
  // aria-selected isn't needed here since this option is not selectable.
567
- // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
568
569
  role="option"
569
570
  ref={ref as ForwardedRef<HTMLDivElement>}>
570
571
  {renderProps.children}
571
- </div>
572
+ </dom.div>
572
573
  )}
573
574
  </>
574
575
  );