react-aria-components 1.14.0 → 1.15.1

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 +121 -62
  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 +96 -10
package/src/Table.tsx CHANGED
@@ -7,7 +7,9 @@ import {
7
7
  ClassNameOrFunction,
8
8
  ContextValue,
9
9
  DEFAULT_SLOT,
10
+ dom,
10
11
  DOMProps,
12
+ DOMRenderProps,
11
13
  Provider,
12
14
  RenderProps,
13
15
  SlotProps,
@@ -218,7 +220,7 @@ interface ResizableTableContainerContextValue {
218
220
 
219
221
  const ResizableTableContainerContext = createContext<ResizableTableContainerContextValue | null>(null);
220
222
 
221
- export interface ResizableTableContainerProps extends DOMProps, GlobalDOMAttributes<HTMLDivElement> {
223
+ export interface ResizableTableContainerProps extends DOMProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
222
224
  /**
223
225
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
224
226
  * @default 'react-aria-ResizableTableContainer'
@@ -283,7 +285,8 @@ export const ResizableTableContainer = forwardRef(function ResizableTableContain
283
285
  }), [tableRef, width, props.onResizeStart, props.onResize, props.onResizeEnd]);
284
286
 
285
287
  return (
286
- <div
288
+ <dom.div
289
+ render={props.render}
287
290
  {...filterDOMProps(props, {global: true})}
288
291
  ref={containerRef}
289
292
  className={props.className || 'react-aria-ResizableTableContainer'}
@@ -292,7 +295,7 @@ export const ResizableTableContainer = forwardRef(function ResizableTableContain
292
295
  <ResizableTableContainerContext.Provider value={ctx}>
293
296
  {props.children}
294
297
  </ResizableTableContainerContext.Provider>
295
- </div>
298
+ </dom.div>
296
299
  );
297
300
  });
298
301
 
@@ -322,7 +325,7 @@ export interface TableRenderProps {
322
325
  state: TableState<unknown>
323
326
  }
324
327
 
325
- export interface TableProps extends Omit<SharedTableProps<any>, 'children'>, StyleRenderProps<TableRenderProps>, SlotProps, AriaLabelingProps, GlobalDOMAttributes<HTMLTableElement> {
328
+ export interface TableProps extends Omit<SharedTableProps<any>, 'children'>, StyleRenderProps<TableRenderProps, 'table' | 'div'>, SlotProps, AriaLabelingProps, GlobalDOMAttributes<HTMLTableElement> {
326
329
  /**
327
330
  * 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.
328
331
  * @default 'react-aria-Table'
@@ -387,9 +390,9 @@ interface TableInnerProps {
387
390
  let TableElementType = forwardRef(function TableElementType(props: any, ref: ForwardedRef<Element>) {
388
391
  let {isVirtualized} = useContext(CollectionRendererContext);
389
392
  if (isVirtualized) {
390
- return <div {...props} ref={ref} />;
393
+ return <dom.div {...props} ref={ref} />;
391
394
  }
392
- return <table {...props} ref={ref} />;
395
+ return <dom.table {...props} ref={ref} />;
393
396
  });
394
397
 
395
398
  function TableInner({props, forwardedRef: ref, selectionState, collection}: TableInnerProps) {
@@ -475,8 +478,8 @@ function TableInner({props, forwardedRef: ref, selectionState, collection}: Tabl
475
478
 
476
479
  let {focusProps, isFocused, isFocusVisible} = useFocusRing();
477
480
  let renderProps = useRenderProps({
478
- className: props.className,
479
- style: props.style,
481
+ ...props,
482
+ children: undefined,
480
483
  defaultClassName: 'react-aria-Table',
481
484
  values: {
482
485
  isDropTarget: isRootDropTarget,
@@ -567,7 +570,7 @@ export interface TableHeaderRenderProps {
567
570
  isHovered: boolean
568
571
  }
569
572
 
570
- export interface TableHeaderProps<T> extends StyleRenderProps<TableHeaderRenderProps>, HoverEvents, GlobalDOMAttributes<HTMLTableSectionElement> {
573
+ export interface TableHeaderProps<T> extends StyleRenderProps<TableHeaderRenderProps, 'thead' | 'div'>, HoverEvents, GlobalDOMAttributes<HTMLTableSectionElement> {
571
574
  /**
572
575
  * 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.
573
576
  * @default 'react-aria-TableHeader'
@@ -588,9 +591,9 @@ class TableHeaderNode<T> extends CollectionNode<T> {
588
591
  let THeadElementType = forwardRef(function THeadElementType(props: any, ref: ForwardedRef<Element>) {
589
592
  let {isVirtualized} = useContext(CollectionRendererContext);
590
593
  if (isVirtualized) {
591
- return <div {...props} ref={ref} />;
594
+ return <dom.div {...props} ref={ref} />;
592
595
  }
593
- return <thead {...props} ref={ref} />;
596
+ return <dom.thead {...props} ref={ref} />;
594
597
  });
595
598
 
596
599
  /**
@@ -620,8 +623,8 @@ export const TableHeader = /*#__PURE__*/ createBranchComponent(
620
623
  });
621
624
 
622
625
  let renderProps = useRenderProps({
623
- className: props.className,
624
- style: props.style,
626
+ ...props,
627
+ children: undefined,
625
628
  defaultClassName: 'react-aria-TableHeader',
626
629
  values: {
627
630
  isHovered
@@ -722,7 +725,7 @@ export interface ColumnRenderProps {
722
725
  startResize(): void
723
726
  }
724
727
 
725
- export interface ColumnProps extends RenderProps<ColumnRenderProps>, GlobalDOMAttributes<HTMLTableHeaderCellElement> {
728
+ export interface ColumnProps extends RenderProps<ColumnRenderProps, 'th' | 'div'>, GlobalDOMAttributes<HTMLTableHeaderCellElement> {
726
729
  /**
727
730
  * 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.
728
731
  * @default 'react-aria-Column'
@@ -753,9 +756,9 @@ class TableColumnNode extends CollectionNode<unknown> {
753
756
  let ColumnElementType = forwardRef(function ColumnElementType(props: any, ref: ForwardedRef<Element>) {
754
757
  let {isVirtualized} = useContext(CollectionRendererContext);
755
758
  if (isVirtualized) {
756
- return <div {...props} ref={ref} />;
759
+ return <dom.div {...props} ref={ref} />;
757
760
  }
758
- return <th {...props} ref={ref} />;
761
+ return <dom.th {...props} ref={ref} />;
759
762
  });
760
763
 
761
764
  /**
@@ -964,7 +967,7 @@ export const ColumnResizer = forwardRef(function ColumnResizer(props: ColumnResi
964
967
  let DOMProps = filterDOMProps(props, {global: true});
965
968
 
966
969
  return (
967
- <div
970
+ <dom.div
968
971
  ref={objectRef}
969
972
  role="presentation"
970
973
  {...mergeProps(DOMProps, renderProps, resizerProps, {onPointerDown}, hoverProps)}
@@ -978,7 +981,7 @@ export const ColumnResizer = forwardRef(function ColumnResizer(props: ColumnResi
978
981
  ref={inputRef}
979
982
  {...mergeProps(inputProps, focusProps)} />
980
983
  {isResizing && isMouseDown && ReactDOM.createPortal(<div style={{position: 'fixed', top: 0, left: 0, bottom: 0, right: 0, cursor}} />, document.body)}
981
- </div>
984
+ </dom.div>
982
985
  );
983
986
  });
984
987
 
@@ -995,7 +998,7 @@ export interface TableBodyRenderProps {
995
998
  isDropTarget: boolean
996
999
  }
997
1000
 
998
- export interface TableBodyProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleRenderProps<TableBodyRenderProps>, GlobalDOMAttributes<HTMLTableSectionElement> {
1001
+ export interface TableBodyProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleRenderProps<TableBodyRenderProps, 'tbody' | 'div'>, GlobalDOMAttributes<HTMLTableSectionElement> {
999
1002
  /**
1000
1003
  * 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.
1001
1004
  * @default 'react-aria-TableBody'
@@ -1012,9 +1015,9 @@ class TableBodyNode<T> extends FilterableNode<T> {
1012
1015
  let TableBodyElementType = forwardRef(function TableBodyElementType(props: any, ref: ForwardedRef<Element>) {
1013
1016
  let {isVirtualized} = useContext(CollectionRendererContext);
1014
1017
  if (isVirtualized) {
1015
- return <div {...props} ref={ref} />;
1018
+ return <dom.div {...props} ref={ref} />;
1016
1019
  }
1017
- return <tbody {...props} ref={ref} />;
1020
+ return <dom.tbody {...props} ref={ref} />;
1018
1021
  });
1019
1022
 
1020
1023
  /**
@@ -1093,7 +1096,7 @@ export interface RowRenderProps extends ItemRenderProps {
1093
1096
  id?: Key
1094
1097
  }
1095
1098
 
1096
- export interface RowProps<T> extends StyleRenderProps<RowRenderProps>, LinkDOMProps, HoverEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLTableRowElement>, 'onClick'> {
1099
+ export interface RowProps<T> extends StyleRenderProps<RowRenderProps, 'tr' | 'div'>, LinkDOMProps, HoverEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLTableRowElement>, 'onClick'> {
1097
1100
  /**
1098
1101
  * 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.
1099
1102
  * @default 'react-aria-Row'
@@ -1140,9 +1143,9 @@ class TableRowNode<T> extends CollectionNode<T> {
1140
1143
  let TableRowElementType = forwardRef(function TableRowElementType(props: any, ref: ForwardedRef<Element>) {
1141
1144
  let {isVirtualized} = useContext(CollectionRendererContext);
1142
1145
  if (isVirtualized) {
1143
- return <div {...props} ref={ref} />;
1146
+ return <dom.div {...props} ref={ref} />;
1144
1147
  }
1145
- return <tr {...props} ref={ref} />;
1148
+ return <dom.tr {...props} ref={ref} />;
1146
1149
  });
1147
1150
 
1148
1151
  /**
@@ -1321,10 +1324,14 @@ export interface CellRenderProps {
1321
1324
  /**
1322
1325
  * The unique id of the cell.
1323
1326
  **/
1324
- id?: Key
1327
+ id?: Key,
1328
+ /**
1329
+ * The index of the column that this cell belongs to. Respects col spanning.
1330
+ */
1331
+ columnIndex?: number | null
1325
1332
  }
1326
1333
 
1327
- export interface CellProps extends RenderProps<CellRenderProps>, GlobalDOMAttributes<HTMLTableCellElement> {
1334
+ export interface CellProps extends RenderProps<CellRenderProps, 'td' | 'div'>, GlobalDOMAttributes<HTMLTableCellElement> {
1328
1335
  /**
1329
1336
  * 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.
1330
1337
  * @default 'react-aria-Cell'
@@ -1345,9 +1352,9 @@ class TableCellNode extends CollectionNode<unknown> {
1345
1352
  let TableCellElementType = forwardRef(function TableCellElementType(props: any, ref: ForwardedRef<Element>) {
1346
1353
  let {isVirtualized} = useContext(CollectionRendererContext);
1347
1354
  if (isVirtualized) {
1348
- return <div {...props} ref={ref} />;
1355
+ return <dom.div {...props} ref={ref} />;
1349
1356
  }
1350
- return <td {...props} ref={ref} />;
1357
+ return <dom.td {...props} ref={ref} />;
1351
1358
  });
1352
1359
 
1353
1360
  /**
@@ -1369,6 +1376,8 @@ export const Cell = /*#__PURE__*/ createLeafComponent(TableCellNode, (props: Cel
1369
1376
  let {isFocused, isFocusVisible, focusProps} = useFocusRing();
1370
1377
  let {hoverProps, isHovered} = useHover({});
1371
1378
  let isSelected = cell.parentKey != null ? state.selectionManager.isSelected(cell.parentKey) : false;
1379
+ // colIndex is null, when there is so span, falling back to using the index
1380
+ let columnIndex = cell.colIndex || cell.index;
1372
1381
 
1373
1382
  let renderProps = useRenderProps({
1374
1383
  ...props,
@@ -1380,7 +1389,8 @@ export const Cell = /*#__PURE__*/ createLeafComponent(TableCellNode, (props: Cel
1380
1389
  isPressed,
1381
1390
  isHovered,
1382
1391
  isSelected,
1383
- id: cell.key
1392
+ id: cell.key,
1393
+ columnIndex
1384
1394
  }
1385
1395
  });
1386
1396
 
@@ -1394,7 +1404,8 @@ export const Cell = /*#__PURE__*/ createLeafComponent(TableCellNode, (props: Cel
1394
1404
  data-focused={isFocused || undefined}
1395
1405
  data-focus-visible={isFocusVisible || undefined}
1396
1406
  data-pressed={isPressed || undefined}
1397
- data-selected={isSelected || undefined}>
1407
+ data-selected={isSelected || undefined}
1408
+ data-column-index={columnIndex}>
1398
1409
  <CollectionRendererContext.Provider value={DefaultCollectionRenderer}>
1399
1410
  {renderProps.children}
1400
1411
  </CollectionRendererContext.Provider>
@@ -1430,16 +1441,16 @@ interface TableDropIndicatorProps extends DropIndicatorProps, GlobalDOMAttribute
1430
1441
  let TableDropIndicatorRowElementType = forwardRef(function TableDropIndicatorRowElementType(props: any, ref: ForwardedRef<Element>) {
1431
1442
  let {isVirtualized} = useContext(CollectionRendererContext);
1432
1443
  if (isVirtualized) {
1433
- return <div {...props} ref={ref} />;
1444
+ return <dom.div {...props} ref={ref} />;
1434
1445
  }
1435
- return <tr {...props} ref={ref} />;
1446
+ return <dom.tr {...props} ref={ref} />;
1436
1447
  });
1437
1448
  let TableDropIndicatorTDElementType = forwardRef(function TableDropIndicatorTDElementType(props: any, ref: ForwardedRef<Element>) {
1438
1449
  let {isVirtualized} = useContext(CollectionRendererContext);
1439
1450
  if (isVirtualized) {
1440
- return <div {...props} ref={ref} />;
1451
+ return <dom.div {...props} ref={ref} />;
1441
1452
  }
1442
- return <td {...props} ref={ref} />;
1453
+ return <dom.td {...props} ref={ref} />;
1443
1454
  });
1444
1455
 
1445
1456
  function TableDropIndicator(props: TableDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {
@@ -1509,7 +1520,7 @@ function RootDropIndicator() {
1509
1520
  );
1510
1521
  }
1511
1522
 
1512
- export interface TableLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, GlobalDOMAttributes<HTMLTableRowElement> {
1523
+ export interface TableLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, DOMRenderProps<'tr' | 'div', undefined>, GlobalDOMAttributes<HTMLTableRowElement> {
1513
1524
  /**
1514
1525
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
1515
1526
  * @default 'react-aria-TableLoadMoreItem'
@@ -1545,7 +1556,7 @@ export const TableLoadMoreItem = createLeafComponent(LoaderNode, function TableL
1545
1556
  id: undefined,
1546
1557
  children: item.rendered,
1547
1558
  defaultClassName: 'react-aria-TableLoadingIndicator',
1548
- values: null
1559
+ values: undefined
1549
1560
  });
1550
1561
  let rowProps = {};
1551
1562
  let rowHeaderProps = {};
package/src/Tabs.tsx CHANGED
@@ -10,9 +10,9 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import {AriaLabelingProps, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
13
+ import {AriaLabelingProps, FocusEvents, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
14
14
  import {AriaTabListProps, AriaTabPanelProps, mergeProps, Orientation, useFocusRing, useHover, useTab, useTabList, useTabPanel} from 'react-aria';
15
- import {ClassNameOrFunction, ContextValue, Provider, RenderProps, SlotProps, StyleProps, StyleRenderProps, useContextProps, useRenderProps, useSlottedContext} from './utils';
15
+ import {ClassNameOrFunction, ContextValue, dom, DOMRenderProps, PossibleLinkDOMRenderProps, Provider, RenderProps, SlotProps, StyleProps, StyleRenderProps, useContextProps, useRenderProps, useSlottedContext} from './utils';
16
16
  import {Collection, CollectionBuilder, CollectionNode, createHideableComponent, createLeafComponent} from '@react-aria/collections';
17
17
  import {CollectionProps, CollectionRendererContext, DefaultCollectionRenderer, usePersistedKeys} from './Collection';
18
18
  import {filterDOMProps, inertValue, useEnterAnimation, useExitAnimation, useLayoutEffect, useObjectRef} from '@react-aria/utils';
@@ -57,7 +57,7 @@ export interface TabListRenderProps {
57
57
  state: TabListState<unknown>
58
58
  }
59
59
 
60
- export interface TabProps extends RenderProps<TabRenderProps>, AriaLabelingProps, LinkDOMProps, HoverEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
60
+ export interface TabProps extends Omit<RenderProps<TabRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', TabRenderProps>, AriaLabelingProps, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
61
61
  /**
62
62
  * 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.
63
63
  * @default 'react-aria-Tab'
@@ -199,7 +199,7 @@ function TabsInner({props, tabsRef: ref, collection}: TabsInnerProps) {
199
199
  let DOMProps = filterDOMProps(props, {global: true});
200
200
 
201
201
  return (
202
- <div
202
+ <dom.div
203
203
  {...mergeProps(DOMProps, renderProps, focusProps)}
204
204
  ref={ref}
205
205
  slot={props.slot || undefined}
@@ -214,7 +214,7 @@ function TabsInner({props, tabsRef: ref, collection}: TabsInnerProps) {
214
214
  ]}>
215
215
  {renderProps.children}
216
216
  </Provider>
217
- </div>
217
+ </dom.div>
218
218
  );
219
219
  }
220
220
 
@@ -260,14 +260,14 @@ function TabListInner<T extends object>({props, forwardedRef: ref}: TabListInner
260
260
  delete DOMProps.id;
261
261
 
262
262
  return (
263
- <div
263
+ <dom.div
264
264
  {...mergeProps(DOMProps, renderProps, tabListProps)}
265
265
  ref={objectRef}
266
266
  data-orientation={orientation || undefined}>
267
267
  <SharedElementTransition>
268
268
  <CollectionRoot collection={state.collection} persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)} />
269
269
  </SharedElementTransition>
270
- </div>
270
+ </dom.div>
271
271
  );
272
272
  }
273
273
 
@@ -290,7 +290,7 @@ export const Tab = /*#__PURE__*/ createLeafComponent(TabItemNode, (props: TabPro
290
290
  onHoverChange: props.onHoverChange
291
291
  });
292
292
 
293
- let renderProps = useRenderProps({
293
+ let renderProps = useRenderProps<TabRenderProps, any>({
294
294
  ...props,
295
295
  id: undefined,
296
296
  children: item.rendered,
@@ -305,7 +305,7 @@ export const Tab = /*#__PURE__*/ createLeafComponent(TabItemNode, (props: TabPro
305
305
  }
306
306
  });
307
307
 
308
- let ElementType: React.ElementType = item.props.href ? 'a' : 'div';
308
+ let ElementType = item.props.href ? dom.a : dom.div;
309
309
  let DOMProps = filterDOMProps(props as any, {global: true});
310
310
  delete DOMProps.id;
311
311
  delete DOMProps.onClick;
@@ -327,7 +327,7 @@ export const Tab = /*#__PURE__*/ createLeafComponent(TabItemNode, (props: TabPro
327
327
  );
328
328
  });
329
329
 
330
- export interface TabPanelsProps<T> extends CollectionProps<T>, StyleProps, GlobalDOMAttributes<HTMLDivElement> {
330
+ export interface TabPanelsProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
331
331
  /**
332
332
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
333
333
  * @default 'react-aria-TabPanels'
@@ -354,7 +354,7 @@ export const TabPanels = /*#__PURE__*/ createHideableComponent(function TabPanel
354
354
  if (hasTransition.current == null) {
355
355
  hasTransition.current = /width|height|all/.test(window.getComputedStyle(el).transition);
356
356
  }
357
-
357
+
358
358
  if (hasTransition.current && selectedKeyRef.current != null && selectedKeyRef.current !== state.selectedKey) {
359
359
  // Measure auto size.
360
360
  el.style.setProperty('--tab-panel-width', 'auto');
@@ -365,7 +365,7 @@ export const TabPanels = /*#__PURE__*/ createHideableComponent(function TabPanel
365
365
  // Revert to previous size.
366
366
  el.style.setProperty('--tab-panel-width', prevSize.current.width + 'px');
367
367
  el.style.setProperty('--tab-panel-height', prevSize.current.height + 'px');
368
-
368
+
369
369
  // Force style re-calculation to trigger animations.
370
370
  window.getComputedStyle(el).height;
371
371
 
@@ -382,7 +382,7 @@ export const TabPanels = /*#__PURE__*/ createHideableComponent(function TabPanel
382
382
  .catch(() => {});
383
383
  }
384
384
  }
385
-
385
+
386
386
  selectedKeyRef.current = state.selectedKey;
387
387
  }, [ref, state.selectedKey]);
388
388
 
@@ -394,13 +394,18 @@ export const TabPanels = /*#__PURE__*/ createHideableComponent(function TabPanel
394
394
  prevSize.current = ref.current.getBoundingClientRect();
395
395
  }
396
396
 
397
+ let DOMProps = filterDOMProps(props, {labelable: true, global: true});
398
+ delete DOMProps.id;
399
+
397
400
  return (
398
- <div
399
- {...props}
401
+ <dom.div
402
+ render={props.render}
403
+ {...DOMProps}
400
404
  ref={ref}
405
+ style={props.style}
401
406
  className={props.className || 'react-aria-TabPanels'}>
402
407
  <Collection {...props} />
403
- </div>
408
+ </dom.div>
404
409
  );
405
410
  });
406
411
 
@@ -466,7 +471,7 @@ function TabPanelInner(props: TabPanelProps & {tabPanelRef: RefObject<HTMLDivEle
466
471
  : mergeProps(DOMProps, renderProps);
467
472
 
468
473
  return (
469
- <div
474
+ <dom.div
470
475
  {...domProps}
471
476
  ref={ref}
472
477
  data-focused={isFocused || undefined}
@@ -485,6 +490,6 @@ function TabPanelInner(props: TabPanelProps & {tabPanelRef: RefObject<HTMLDivEle
485
490
  {renderProps.children}
486
491
  </CollectionRendererContext.Provider>
487
492
  </Provider>
488
- </div>
493
+ </dom.div>
489
494
  );
490
495
  }
package/src/TagGroup.tsx CHANGED
@@ -15,7 +15,9 @@ import {ButtonContext} from './Button';
15
15
  import {
16
16
  ClassNameOrFunction,
17
17
  ContextValue,
18
+ dom,
18
19
  DOMProps,
20
+ DOMRenderProps,
19
21
  Provider,
20
22
  RenderProps,
21
23
  SlotProps,
@@ -27,7 +29,7 @@ import {
27
29
  import {Collection, CollectionBuilder, createLeafComponent, ItemNode} from '@react-aria/collections';
28
30
  import {CollectionProps, CollectionRendererContext, DefaultCollectionRenderer, ItemRenderProps, usePersistedKeys} from './Collection';
29
31
  import {filterDOMProps, mergeProps, useObjectRef} from '@react-aria/utils';
30
- import {forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
32
+ import {FocusEvents, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
31
33
  import {LabelContext} from './Label';
32
34
  import {ListState, Node, UNSTABLE_useFilteredListState, useListState} from 'react-stately';
33
35
  import {ListStateContext} from './ListBox';
@@ -37,7 +39,7 @@ import {SelectionIndicatorContext} from './SelectionIndicator';
37
39
  import {SharedElementTransition} from './SharedElementTransition';
38
40
  import {TextContext} from './Text';
39
41
 
40
- export interface TagGroupProps extends Omit<AriaTagGroupProps<unknown>, 'children' | 'items' | 'label' | 'description' | 'errorMessage' | 'keyboardDelegate'>, DOMProps, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
42
+ export interface TagGroupProps extends Omit<AriaTagGroupProps<unknown>, 'children' | 'items' | 'label' | 'description' | 'errorMessage' | 'keyboardDelegate'>, DOMProps, SlotProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
41
43
  /**
42
44
  * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
43
45
  * @default 'react-aria-TagGroup'
@@ -67,7 +69,7 @@ export interface TagListRenderProps {
67
69
  state: ListState<unknown>
68
70
  }
69
71
 
70
- export interface TagListProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleRenderProps<TagListRenderProps>, GlobalDOMAttributes<HTMLDivElement> {
72
+ export interface TagListProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleRenderProps<TagListRenderProps, 'div'>, GlobalDOMAttributes<HTMLDivElement> {
71
73
  /**
72
74
  * 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.
73
75
  * @default 'react-aria-TagList'
@@ -97,7 +99,7 @@ export const TagGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(function Ta
97
99
  interface TagGroupInnerProps<T> {
98
100
  props: TagGroupProps & SelectableCollectionContextValue<T>,
99
101
  forwardedRef: ForwardedRef<HTMLDivElement>,
100
- collection
102
+ collection: any
101
103
  }
102
104
 
103
105
  function TagGroupInner<T extends object>({props, forwardedRef: ref, collection}: TagGroupInnerProps<T>) {
@@ -133,7 +135,8 @@ function TagGroupInner<T extends object>({props, forwardedRef: ref, collection}:
133
135
  }, filteredState, tagListRef);
134
136
 
135
137
  return (
136
- <div
138
+ <dom.div
139
+ render={props.render}
137
140
  {...domProps}
138
141
  id={id}
139
142
  ref={ref}
@@ -154,7 +157,7 @@ function TagGroupInner<T extends object>({props, forwardedRef: ref, collection}:
154
157
  ]}>
155
158
  {props.children}
156
159
  </Provider>
157
- </div>
160
+ </dom.div>
158
161
  );
159
162
  }
160
163
 
@@ -186,8 +189,8 @@ function TagListInner<T extends object>({props, forwardedRef}: TagListInnerProps
186
189
  state
187
190
  };
188
191
  let renderProps = useRenderProps({
189
- className: props.className,
190
- style: props.style,
192
+ ...props,
193
+ children: undefined,
191
194
  defaultClassName: 'react-aria-TagList',
192
195
  values: renderValues
193
196
  });
@@ -196,7 +199,7 @@ function TagListInner<T extends object>({props, forwardedRef}: TagListInnerProps
196
199
  let DOMProps = filterDOMProps(props, {global: true});
197
200
 
198
201
  return (
199
- <div
202
+ <dom.div
200
203
  {...mergeProps(DOMProps, renderProps, gridProps, focusProps)}
201
204
  ref={ref}
202
205
  data-empty={state.collection.size === 0 || undefined}
@@ -207,7 +210,7 @@ function TagListInner<T extends object>({props, forwardedRef}: TagListInnerProps
207
210
  ? props.renderEmptyState(renderValues)
208
211
  : <CollectionRoot collection={state.collection} persistedKeys={persistedKeys} />}
209
212
  </SharedElementTransition>
210
- </div>
213
+ </dom.div>
211
214
  );
212
215
  }
213
216
 
@@ -219,7 +222,7 @@ export interface TagRenderProps extends Omit<ItemRenderProps, 'allowsDragging' |
219
222
  allowsRemoving: boolean
220
223
  }
221
224
 
222
- export interface TagProps extends RenderProps<TagRenderProps>, LinkDOMProps, HoverEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
225
+ export interface TagProps extends RenderProps<TagRenderProps, 'div'>, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
223
226
  /**
224
227
  * 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.
225
228
  * @default 'react-aria-Tag'
@@ -277,7 +280,7 @@ export const Tag = /*#__PURE__*/ createLeafComponent(ItemNode, (props: TagProps,
277
280
  delete DOMProps.onClick;
278
281
 
279
282
  return (
280
- <div
283
+ <dom.div
281
284
  ref={ref}
282
285
  {...mergeProps(DOMProps, renderProps, rowProps, focusProps, hoverProps)}
283
286
  data-selected={states.isSelected || undefined}
@@ -302,6 +305,6 @@ export const Tag = /*#__PURE__*/ createLeafComponent(ItemNode, (props: TagProps,
302
305
  {renderProps.children}
303
306
  </Provider>
304
307
  </div>
305
- </div>
308
+ </dom.div>
306
309
  );
307
310
  });
package/src/Text.tsx CHANGED
@@ -10,10 +10,10 @@
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 TextProps extends HTMLAttributes<HTMLElement> {
16
+ export interface TextProps extends HTMLAttributes<HTMLElement>, DOMRenderProps<any, any> {
17
17
  elementType?: string
18
18
  }
19
19
 
@@ -21,7 +21,8 @@ export const TextContext = createContext<ContextValue<TextProps, HTMLElement>>({
21
21
 
22
22
  export const Text = forwardRef(function Text(props: TextProps, ref: ForwardedRef<HTMLElement>) {
23
23
  [props, ref] = useContextProps(props, ref, TextContext);
24
- let {elementType: ElementType = 'span', ...domProps} = props;
24
+ let {elementType = 'span', ...domProps} = props;
25
+ let ElementType = dom[elementType];
25
26
  // @ts-ignore
26
27
  return <ElementType className="react-aria-Text" {...domProps} ref={ref} />;
27
28
  });
package/src/TextArea.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  ClassNameOrFunction,
3
3
  ContextValue,
4
+ dom,
4
5
  StyleRenderProps,
5
6
  useContextProps,
6
7
  useRenderProps
@@ -9,7 +10,7 @@ import {HoverEvents, mergeProps, useFocusRing, useHover} from 'react-aria';
9
10
  import {InputRenderProps} from './Input';
10
11
  import React, {createContext, ForwardedRef, forwardRef, TextareaHTMLAttributes} from 'react';
11
12
 
12
- export interface TextAreaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'className' | 'style'>, HoverEvents, StyleRenderProps<InputRenderProps> {
13
+ export interface TextAreaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'className' | 'style'>, HoverEvents, StyleRenderProps<InputRenderProps, 'textarea'> {
13
14
  /**
14
15
  * 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.
15
16
  * @default 'react-aria-TextArea'
@@ -51,7 +52,7 @@ export const TextArea = forwardRef(function TextArea(props: TextAreaProps, ref:
51
52
  });
52
53
 
53
54
  return (
54
- <textarea
55
+ <dom.textarea
55
56
  {...mergeProps(filterHoverProps(props), focusProps, hoverProps)}
56
57
  {...renderProps}
57
58
  ref={ref}
package/src/TextField.tsx CHANGED
@@ -14,6 +14,7 @@ import {AriaTextFieldProps, useTextField} from 'react-aria';
14
14
  import {
15
15
  ClassNameOrFunction,
16
16
  ContextValue,
17
+ dom,
17
18
  DOMProps,
18
19
  Provider,
19
20
  RACValidation,
@@ -61,7 +62,7 @@ export interface TextFieldRenderProps {
61
62
  isRequired: boolean
62
63
  }
63
64
 
64
- export interface TextFieldProps extends Omit<AriaTextFieldProps, 'label' | 'placeholder' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior'>, RACValidation, Omit<DOMProps, 'style' | 'className' | 'children'>, SlotProps, RenderProps<TextFieldRenderProps>, GlobalDOMAttributes<HTMLDivElement> {
65
+ export interface TextFieldProps extends Omit<AriaTextFieldProps, 'label' | 'placeholder' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior'>, RACValidation, Omit<DOMProps, 'style' | 'className' | 'render' | 'children'>, SlotProps, RenderProps<TextFieldRenderProps>, GlobalDOMAttributes<HTMLDivElement> {
65
66
  /**
66
67
  * 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.
67
68
  * @default 'react-aria-TextField'
@@ -117,7 +118,7 @@ export const TextField = /*#__PURE__*/ createHideableComponent(function TextFiel
117
118
  delete DOMProps.id;
118
119
 
119
120
  return (
120
- <div
121
+ <dom.div
121
122
  {...DOMProps}
122
123
  {...renderProps}
123
124
  ref={ref}
@@ -142,6 +143,6 @@ export const TextField = /*#__PURE__*/ createHideableComponent(function TextFiel
142
143
  ]}>
143
144
  {renderProps.children}
144
145
  </Provider>
145
- </div>
146
+ </dom.div>
146
147
  );
147
148
  });