@vjdesigns/vjdesigns-ui 2.4.0 → 3.0.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 (453) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +45 -1
  3. package/dist/ai/llms-full.txt +141 -76
  4. package/dist/ai/registry.json +125 -61
  5. package/dist/components/data-display/Accordion/Accordion.cjs.js +1 -1
  6. package/dist/components/data-display/Accordion/Accordion.mjs +22 -22
  7. package/dist/components/data-display/Accordion/Accordion.module.css.mjs +1 -2
  8. package/dist/components/data-display/Avatar/Avatar.cjs.js +1 -1
  9. package/dist/components/data-display/Avatar/Avatar.mjs +92 -92
  10. package/dist/components/data-display/Avatar/Avatar.module.css.mjs +1 -2
  11. package/dist/components/data-display/Badge/Badge.cjs.js +1 -1
  12. package/dist/components/data-display/Badge/Badge.mjs +2 -2
  13. package/dist/components/data-display/Badge/Badge.module.css.mjs +1 -2
  14. package/dist/components/data-display/Card/Card.cjs.js +1 -1
  15. package/dist/components/data-display/Card/Card.mjs +2 -2
  16. package/dist/components/data-display/Card/Card.module.css.mjs +1 -2
  17. package/dist/components/data-display/Carousel/Carousel.cjs.js +1 -1
  18. package/dist/components/data-display/Carousel/Carousel.mjs +42 -42
  19. package/dist/components/data-display/Carousel/Carousel.module.css.mjs +1 -2
  20. package/dist/components/data-display/Chat/Chat.cjs.js +1 -1
  21. package/dist/components/data-display/Chat/Chat.mjs +114 -118
  22. package/dist/components/data-display/Chat/Chat.module.css.mjs +1 -2
  23. package/dist/components/data-display/Chat/streams.mjs +1 -2
  24. package/dist/components/data-display/Chip/Chip.cjs.js +1 -1
  25. package/dist/components/data-display/Chip/Chip.mjs +50 -54
  26. package/dist/components/data-display/Chip/Chip.module.css.mjs +1 -2
  27. package/dist/components/data-display/CodeBlock/CodeBlock.cjs.js +4 -4
  28. package/dist/components/data-display/CodeBlock/CodeBlock.mjs +113 -113
  29. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.mjs +1 -2
  30. package/dist/components/data-display/CodeBlock/tokenize.mjs +1 -2
  31. package/dist/components/data-display/DataGrid/DataGrid.cjs.js +1 -1
  32. package/dist/components/data-display/DataGrid/DataGrid.d.ts +59 -3
  33. package/dist/components/data-display/DataGrid/DataGrid.mjs +382 -272
  34. package/dist/components/data-display/DataGrid/DataGrid.module.css.cjs.js +1 -1
  35. package/dist/components/data-display/DataGrid/DataGrid.module.css.mjs +29 -26
  36. package/dist/components/data-display/DataGrid/dataGridUtils.cjs.js +1 -1
  37. package/dist/components/data-display/DataGrid/dataGridUtils.d.ts +18 -0
  38. package/dist/components/data-display/DataGrid/dataGridUtils.mjs +100 -32
  39. package/dist/components/data-display/EmptyState/EmptyState.cjs.js +1 -1
  40. package/dist/components/data-display/EmptyState/EmptyState.mjs +53 -53
  41. package/dist/components/data-display/EmptyState/EmptyState.module.css.mjs +1 -2
  42. package/dist/components/data-display/Image/Image.cjs.js +1 -1
  43. package/dist/components/data-display/Image/Image.mjs +6 -6
  44. package/dist/components/data-display/Image/Image.module.css.mjs +1 -2
  45. package/dist/components/data-display/List/List.cjs.js +1 -1
  46. package/dist/components/data-display/List/List.mjs +68 -68
  47. package/dist/components/data-display/List/List.module.css.mjs +1 -2
  48. package/dist/components/data-display/Stat/Stat.cjs.js +1 -1
  49. package/dist/components/data-display/Stat/Stat.mjs +112 -112
  50. package/dist/components/data-display/Stat/Stat.module.css.mjs +1 -2
  51. package/dist/components/data-display/Table/Table.cjs.js +1 -1
  52. package/dist/components/data-display/Table/Table.mjs +187 -183
  53. package/dist/components/data-display/Table/Table.module.css.mjs +1 -2
  54. package/dist/components/data-display/Table/useTable.cjs.js +1 -1
  55. package/dist/components/data-display/Table/useTable.mjs +2 -2
  56. package/dist/components/data-display/Timeline/Timeline.cjs.js +1 -1
  57. package/dist/components/data-display/Timeline/Timeline.mjs +64 -64
  58. package/dist/components/data-display/Timeline/Timeline.module.css.mjs +1 -2
  59. package/dist/components/data-display/TreeView/TreeView.cjs.js +1 -1
  60. package/dist/components/data-display/TreeView/TreeView.mjs +107 -119
  61. package/dist/components/data-display/TreeView/TreeView.module.css.mjs +1 -2
  62. package/dist/components/data-display/TreeView/treeUtils.mjs +1 -2
  63. package/dist/components/data-display/VirtualList/VirtualList.cjs.js +1 -1
  64. package/dist/components/data-display/VirtualList/VirtualList.mjs +2 -2
  65. package/dist/components/data-display/VirtualList/VirtualList.module.css.mjs +1 -2
  66. package/dist/components/feedback/Alert/Alert.cjs.js +1 -1
  67. package/dist/components/feedback/Alert/Alert.mjs +56 -56
  68. package/dist/components/feedback/Alert/Alert.module.css.mjs +1 -2
  69. package/dist/components/feedback/Banner/Banner.cjs.js +1 -1
  70. package/dist/components/feedback/Banner/Banner.mjs +48 -48
  71. package/dist/components/feedback/Banner/Banner.module.css.mjs +1 -2
  72. package/dist/components/feedback/ErrorSummary/ErrorSummary.cjs.js +1 -1
  73. package/dist/components/feedback/ErrorSummary/ErrorSummary.mjs +10 -10
  74. package/dist/components/feedback/ErrorSummary/ErrorSummary.module.css.mjs +1 -2
  75. package/dist/components/feedback/Progress/Progress.cjs.js +1 -1
  76. package/dist/components/feedback/Progress/Progress.mjs +2 -2
  77. package/dist/components/feedback/Progress/Progress.module.css.mjs +1 -2
  78. package/dist/components/feedback/Skeleton/Skeleton.cjs.js +1 -1
  79. package/dist/components/feedback/Skeleton/Skeleton.mjs +73 -73
  80. package/dist/components/feedback/Skeleton/Skeleton.module.css.mjs +1 -2
  81. package/dist/components/feedback/Spinner/Spinner.cjs.js +1 -1
  82. package/dist/components/feedback/Spinner/Spinner.mjs +29 -29
  83. package/dist/components/feedback/Spinner/Spinner.module.css.mjs +1 -2
  84. package/dist/components/feedback/Toast/Toast.cjs.js +1 -1
  85. package/dist/components/feedback/Toast/Toast.mjs +42 -42
  86. package/dist/components/feedback/Toast/Toast.module.css.mjs +1 -2
  87. package/dist/components/feedback/Toast/ToastItem.cjs.js +1 -1
  88. package/dist/components/feedback/Toast/ToastItem.mjs +10 -10
  89. package/dist/components/feedback/Toast/ToastProvider.cjs.js +1 -1
  90. package/dist/components/feedback/Toast/ToastProvider.mjs +11 -11
  91. package/dist/components/feedback/Toast/ToastViewport.cjs.js +1 -1
  92. package/dist/components/feedback/Toast/ToastViewport.mjs +30 -30
  93. package/dist/components/feedback/Toast/toastStore.mjs +1 -2
  94. package/dist/components/feedback/Toast/toastTiming.cjs.js +1 -1
  95. package/dist/components/feedback/Toast/toastTiming.mjs +2 -2
  96. package/dist/components/feedback/Toast/useToast.cjs.js +1 -1
  97. package/dist/components/feedback/Toast/useToast.mjs +2 -2
  98. package/dist/components/feedback/Toast/useToastAnnouncer.cjs.js +1 -1
  99. package/dist/components/feedback/Toast/useToastAnnouncer.mjs +2 -2
  100. package/dist/components/forms/CheckBox/CheckBox.cjs.js +1 -1
  101. package/dist/components/forms/CheckBox/CheckBox.mjs +2 -2
  102. package/dist/components/forms/CheckBox/CheckBox.module.css.mjs +1 -2
  103. package/dist/components/forms/ColorPicker/ColorInput.cjs.js +1 -1
  104. package/dist/components/forms/ColorPicker/ColorInput.mjs +43 -43
  105. package/dist/components/forms/ColorPicker/ColorPicker.cjs.js +1 -1
  106. package/dist/components/forms/ColorPicker/ColorPicker.mjs +153 -153
  107. package/dist/components/forms/ColorPicker/ColorPicker.module.css.mjs +1 -2
  108. package/dist/components/forms/ColorPicker/colorUtils.mjs +1 -2
  109. package/dist/components/forms/Combobox/Combobox.cjs.js +1 -1
  110. package/dist/components/forms/Combobox/Combobox.mjs +200 -213
  111. package/dist/components/forms/Combobox/Combobox.module.css.mjs +1 -2
  112. package/dist/components/forms/Combobox/ComboboxPopup.cjs.js +1 -1
  113. package/dist/components/forms/Combobox/ComboboxPopup.mjs +164 -121
  114. package/dist/components/forms/Combobox/comboboxUtils.cjs.js +1 -1
  115. package/dist/components/forms/Combobox/comboboxUtils.d.ts +4 -1
  116. package/dist/components/forms/Combobox/comboboxUtils.mjs +21 -20
  117. package/dist/components/forms/DatePicker/Calendar.cjs.js +1 -1
  118. package/dist/components/forms/DatePicker/Calendar.mjs +60 -66
  119. package/dist/components/forms/DatePicker/Calendar.module.css.mjs +1 -2
  120. package/dist/components/forms/DatePicker/DatePicker.cjs.js +1 -1
  121. package/dist/components/forms/DatePicker/DatePicker.mjs +72 -74
  122. package/dist/components/forms/DatePicker/DatePicker.module.css.mjs +1 -2
  123. package/dist/components/forms/DatePicker/DateRangePicker.cjs.js +1 -1
  124. package/dist/components/forms/DatePicker/DateRangePicker.mjs +117 -117
  125. package/dist/components/forms/DatePicker/DateRangePicker.module.css.mjs +1 -2
  126. package/dist/components/forms/DatePicker/dateUtils.mjs +1 -2
  127. package/dist/components/forms/DatePicker/index.d.ts +1 -1
  128. package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.js +1 -1
  129. package/dist/components/forms/DateTimePicker/DateTimePicker.mjs +19 -19
  130. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.mjs +1 -2
  131. package/dist/components/forms/Field/Field.cjs.js +1 -1
  132. package/dist/components/forms/Field/Field.mjs +14 -14
  133. package/dist/components/forms/Field/Field.module.css.mjs +1 -2
  134. package/dist/components/forms/Field/FieldContext.cjs.js +1 -1
  135. package/dist/components/forms/Field/FieldContext.mjs +2 -2
  136. package/dist/components/forms/FileUpload/FileUpload.cjs.js +1 -1
  137. package/dist/components/forms/FileUpload/FileUpload.mjs +250 -255
  138. package/dist/components/forms/FileUpload/FileUpload.module.css.mjs +1 -2
  139. package/dist/components/forms/Input/Input.cjs.js +1 -1
  140. package/dist/components/forms/Input/Input.mjs +35 -35
  141. package/dist/components/forms/Input/Input.module.css.mjs +1 -2
  142. package/dist/components/forms/NumberInput/NumberInput.cjs.js +1 -1
  143. package/dist/components/forms/NumberInput/NumberInput.mjs +137 -142
  144. package/dist/components/forms/NumberInput/NumberInput.module.css.mjs +1 -2
  145. package/dist/components/forms/PasswordInput/PasswordInput.cjs.js +1 -1
  146. package/dist/components/forms/PasswordInput/PasswordInput.mjs +142 -142
  147. package/dist/components/forms/PasswordInput/PasswordInput.module.css.mjs +1 -2
  148. package/dist/components/forms/PinInput/PinInput.cjs.js +1 -1
  149. package/dist/components/forms/PinInput/PinInput.mjs +12 -12
  150. package/dist/components/forms/PinInput/PinInput.module.css.mjs +1 -2
  151. package/dist/components/forms/Radio/Radio.cjs.js +1 -1
  152. package/dist/components/forms/Radio/Radio.mjs +2 -2
  153. package/dist/components/forms/Radio/Radio.module.css.mjs +1 -2
  154. package/dist/components/forms/Rating/Rating.cjs.js +1 -1
  155. package/dist/components/forms/Rating/Rating.mjs +110 -109
  156. package/dist/components/forms/Rating/Rating.module.css.mjs +1 -2
  157. package/dist/components/forms/SearchInput/SearchInput.cjs.js +1 -1
  158. package/dist/components/forms/SearchInput/SearchInput.mjs +118 -126
  159. package/dist/components/forms/SearchInput/SearchInput.module.css.mjs +1 -2
  160. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.js +1 -1
  161. package/dist/components/forms/SegmentedControl/SegmentedControl.mjs +46 -43
  162. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.js +1 -1
  163. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.mjs +2 -3
  164. package/dist/components/forms/Select/Select.cjs.js +1 -1
  165. package/dist/components/forms/Select/Select.mjs +2 -2
  166. package/dist/components/forms/Select/Select.module.css.mjs +1 -2
  167. package/dist/components/forms/Slider/Slider.cjs.js +1 -1
  168. package/dist/components/forms/Slider/Slider.mjs +2 -2
  169. package/dist/components/forms/Slider/Slider.module.css.mjs +1 -2
  170. package/dist/components/forms/Switch/Switch.cjs.js +1 -1
  171. package/dist/components/forms/Switch/Switch.mjs +39 -39
  172. package/dist/components/forms/Switch/Switch.module.css.mjs +1 -2
  173. package/dist/components/forms/TagInput/TagInput.cjs.js +1 -1
  174. package/dist/components/forms/TagInput/TagInput.mjs +197 -203
  175. package/dist/components/forms/TagInput/TagInput.module.css.mjs +1 -2
  176. package/dist/components/forms/Textarea/Textarea.cjs.js +1 -1
  177. package/dist/components/forms/Textarea/Textarea.mjs +59 -59
  178. package/dist/components/forms/Textarea/Textarea.module.css.mjs +1 -2
  179. package/dist/components/forms/TimePicker/TimePicker.cjs.js +1 -1
  180. package/dist/components/forms/TimePicker/TimePicker.mjs +65 -67
  181. package/dist/components/forms/TimePicker/TimePicker.module.css.mjs +1 -2
  182. package/dist/components/forms/TimePicker/index.d.ts +1 -0
  183. package/dist/components/forms/TimePicker/timeUtils.cjs.js +1 -1
  184. package/dist/components/forms/TimePicker/timeUtils.d.ts +4 -1
  185. package/dist/components/forms/TimePicker/timeUtils.mjs +43 -38
  186. package/dist/components/forms/ToggleGroup/ToggleGroup.cjs.js +1 -1
  187. package/dist/components/forms/ToggleGroup/ToggleGroup.mjs +10 -10
  188. package/dist/components/forms/ToggleGroup/ToggleGroup.module.css.mjs +1 -2
  189. package/dist/components/layout/Box/Box.mjs +1 -2
  190. package/dist/components/layout/Box/Box.module.css.mjs +1 -2
  191. package/dist/components/layout/Container/Container.mjs +1 -2
  192. package/dist/components/layout/Container/Container.module.css.mjs +1 -2
  193. package/dist/components/layout/Divider/Divider.mjs +1 -2
  194. package/dist/components/layout/Divider/Divider.module.css.mjs +1 -2
  195. package/dist/components/layout/Flex/Flex.cjs.js +1 -1
  196. package/dist/components/layout/Flex/Flex.mjs +12 -13
  197. package/dist/components/layout/Flex/Flex.module.css.mjs +1 -2
  198. package/dist/components/layout/Grid/Grid.cjs.js +1 -1
  199. package/dist/components/layout/Grid/Grid.mjs +20 -21
  200. package/dist/components/layout/Grid/Grid.module.css.mjs +1 -2
  201. package/dist/components/layout/ResizablePanels/ResizablePanels.cjs.js +1 -1
  202. package/dist/components/layout/ResizablePanels/ResizablePanels.mjs +17 -17
  203. package/dist/components/layout/ResizablePanels/ResizablePanels.module.css.mjs +1 -2
  204. package/dist/components/layout/ScrollArea/ScrollArea.cjs.js +1 -1
  205. package/dist/components/layout/ScrollArea/ScrollArea.mjs +2 -2
  206. package/dist/components/layout/ScrollArea/ScrollArea.module.css.mjs +1 -2
  207. package/dist/components/layout/Stack/Stack.cjs.js +1 -1
  208. package/dist/components/layout/Stack/Stack.mjs +8 -9
  209. package/dist/components/layout/Stack/Stack.module.css.mjs +1 -2
  210. package/dist/components/navigation/Breadcrumbs/Breadcrumbs.cjs.js +1 -1
  211. package/dist/components/navigation/Breadcrumbs/Breadcrumbs.mjs +41 -41
  212. package/dist/components/navigation/Breadcrumbs/Breadcrumbs.module.css.mjs +1 -2
  213. package/dist/components/navigation/ContextMenu/ContextMenu.cjs.js +1 -1
  214. package/dist/components/navigation/ContextMenu/ContextMenu.mjs +48 -48
  215. package/dist/components/navigation/ContextMenu/ContextMenu.module.css.mjs +1 -2
  216. package/dist/components/navigation/Link/Link.cjs.js +1 -1
  217. package/dist/components/navigation/Link/Link.mjs +6 -7
  218. package/dist/components/navigation/Link/Link.module.css.mjs +1 -2
  219. package/dist/components/navigation/Menu/Menu.cjs.js +1 -1
  220. package/dist/components/navigation/Menu/Menu.mjs +11 -11
  221. package/dist/components/navigation/Menu/Menu.module.css.mjs +1 -2
  222. package/dist/components/navigation/Menu/MenuContent.cjs.js +1 -1
  223. package/dist/components/navigation/Menu/MenuContent.mjs +46 -46
  224. package/dist/components/navigation/Menu/MenuContext.cjs.js +1 -1
  225. package/dist/components/navigation/Menu/MenuContext.mjs +2 -2
  226. package/dist/components/navigation/Menu/MenuItem.cjs.js +1 -1
  227. package/dist/components/navigation/Menu/MenuItem.mjs +35 -39
  228. package/dist/components/navigation/Menu/MenuSub.cjs.js +1 -1
  229. package/dist/components/navigation/Menu/MenuSub.mjs +16 -20
  230. package/dist/components/navigation/Menu/useMenuRoot.cjs.js +1 -1
  231. package/dist/components/navigation/Menu/useMenuRoot.mjs +2 -2
  232. package/dist/components/navigation/Navbar/Navbar.cjs.js +1 -1
  233. package/dist/components/navigation/Navbar/Navbar.mjs +111 -111
  234. package/dist/components/navigation/Navbar/Navbar.module.css.mjs +1 -2
  235. package/dist/components/navigation/Pagination/Pagination.cjs.js +1 -1
  236. package/dist/components/navigation/Pagination/Pagination.mjs +31 -35
  237. package/dist/components/navigation/Pagination/Pagination.module.css.mjs +1 -2
  238. package/dist/components/navigation/Sidebar/Sidebar.cjs.js +1 -1
  239. package/dist/components/navigation/Sidebar/Sidebar.mjs +52 -52
  240. package/dist/components/navigation/Sidebar/Sidebar.module.css.mjs +1 -2
  241. package/dist/components/navigation/Sidebar/SidebarContext.cjs.js +1 -1
  242. package/dist/components/navigation/Sidebar/SidebarContext.mjs +2 -2
  243. package/dist/components/navigation/Sidebar/SidebarParts.cjs.js +1 -1
  244. package/dist/components/navigation/Sidebar/SidebarParts.mjs +76 -80
  245. package/dist/components/navigation/SkipLink/SkipLink.cjs.js +1 -1
  246. package/dist/components/navigation/SkipLink/SkipLink.mjs +12 -12
  247. package/dist/components/navigation/SkipLink/SkipLink.module.css.mjs +1 -2
  248. package/dist/components/navigation/Stepper/Stepper.cjs.js +1 -1
  249. package/dist/components/navigation/Stepper/Stepper.mjs +46 -46
  250. package/dist/components/navigation/Stepper/Stepper.module.css.mjs +1 -2
  251. package/dist/components/navigation/Tabs/Tabs.cjs.js +1 -1
  252. package/dist/components/navigation/Tabs/Tabs.mjs +2 -2
  253. package/dist/components/navigation/Tabs/Tabs.module.css.mjs +1 -2
  254. package/dist/components/overlays/CommandPalette/CommandPalette.cjs.js +1 -1
  255. package/dist/components/overlays/CommandPalette/CommandPalette.mjs +206 -206
  256. package/dist/components/overlays/CommandPalette/CommandPalette.module.css.mjs +1 -2
  257. package/dist/components/overlays/CommandPalette/CommandPaletteContext.cjs.js +1 -1
  258. package/dist/components/overlays/CommandPalette/CommandPaletteContext.mjs +2 -2
  259. package/dist/components/overlays/CommandPalette/CommandPaletteParts.cjs.js +1 -1
  260. package/dist/components/overlays/CommandPalette/CommandPaletteParts.mjs +104 -104
  261. package/dist/components/overlays/CommandPalette/commandPaletteUtils.cjs.js +1 -1
  262. package/dist/components/overlays/CommandPalette/commandPaletteUtils.mjs +62 -60
  263. package/dist/components/overlays/Drawer/Drawer.cjs.js +1 -1
  264. package/dist/components/overlays/Drawer/Drawer.mjs +31 -31
  265. package/dist/components/overlays/Drawer/Drawer.module.css.mjs +1 -2
  266. package/dist/components/overlays/Drawer/DrawerContent.cjs.js +1 -1
  267. package/dist/components/overlays/Drawer/DrawerContent.mjs +99 -99
  268. package/dist/components/overlays/Drawer/DrawerContext.cjs.js +1 -1
  269. package/dist/components/overlays/Drawer/DrawerContext.mjs +2 -2
  270. package/dist/components/overlays/Drawer/DrawerParts.cjs.js +1 -1
  271. package/dist/components/overlays/Drawer/DrawerParts.mjs +18 -18
  272. package/dist/components/overlays/Drawer/internal.mjs +1 -2
  273. package/dist/components/overlays/Drawer/useDragToClose.cjs.js +1 -1
  274. package/dist/components/overlays/Drawer/useDragToClose.mjs +2 -2
  275. package/dist/components/overlays/HoverCard/HoverCard.cjs.js +1 -1
  276. package/dist/components/overlays/HoverCard/HoverCard.mjs +31 -31
  277. package/dist/components/overlays/HoverCard/HoverCard.module.css.mjs +1 -2
  278. package/dist/components/overlays/Modal/ConfirmModal.cjs.js +1 -1
  279. package/dist/components/overlays/Modal/ConfirmModal.mjs +21 -23
  280. package/dist/components/overlays/Modal/Modal.cjs.js +1 -1
  281. package/dist/components/overlays/Modal/Modal.mjs +47 -47
  282. package/dist/components/overlays/Modal/Modal.module.css.mjs +1 -2
  283. package/dist/components/overlays/Modal/ModalContent.cjs.js +1 -1
  284. package/dist/components/overlays/Modal/ModalContent.mjs +24 -24
  285. package/dist/components/overlays/Modal/ModalContext.cjs.js +1 -1
  286. package/dist/components/overlays/Modal/ModalContext.mjs +2 -2
  287. package/dist/components/overlays/Modal/useScrollRegion.cjs.js +1 -1
  288. package/dist/components/overlays/Modal/useScrollRegion.mjs +2 -2
  289. package/dist/components/overlays/Popover/Popover.cjs.js +1 -1
  290. package/dist/components/overlays/Popover/Popover.mjs +40 -40
  291. package/dist/components/overlays/Popover/Popover.module.css.mjs +1 -2
  292. package/dist/components/overlays/Popover/PopoverContent.cjs.js +1 -1
  293. package/dist/components/overlays/Popover/PopoverContent.mjs +39 -39
  294. package/dist/components/overlays/Popover/PopoverContext.cjs.js +1 -1
  295. package/dist/components/overlays/Popover/PopoverContext.mjs +2 -2
  296. package/dist/components/overlays/Tooltip/Tooltip.cjs.js +1 -1
  297. package/dist/components/overlays/Tooltip/Tooltip.mjs +100 -95
  298. package/dist/components/overlays/Tooltip/Tooltip.module.css.mjs +1 -2
  299. package/dist/components/primitives/Button/Button.cjs.js +1 -1
  300. package/dist/components/primitives/Button/Button.mjs +59 -63
  301. package/dist/components/primitives/Button/Button.module.css.mjs +1 -2
  302. package/dist/components/primitives/Icon/Icon.cjs.js +1 -1
  303. package/dist/components/primitives/Icon/Icon.mjs +5 -6
  304. package/dist/components/primitives/Icon/Icon.module.css.mjs +1 -2
  305. package/dist/components/primitives/Icon/IconSvg.mjs +1 -2
  306. package/dist/components/primitives/Icon/icons.mjs +1 -2
  307. package/dist/components/primitives/Kbd/Kbd.cjs.js +1 -1
  308. package/dist/components/primitives/Kbd/Kbd.mjs +30 -30
  309. package/dist/components/primitives/Kbd/Kbd.module.css.mjs +1 -2
  310. package/dist/components/primitives/Typography/Typography.mjs +1 -2
  311. package/dist/components/primitives/Typography/Typography.module.css.mjs +1 -2
  312. package/dist/components/utilities/LocaleProvider/LocaleProvider.cjs.js +1 -1
  313. package/dist/components/utilities/LocaleProvider/LocaleProvider.mjs +11 -11
  314. package/dist/components/utilities/LocaleProvider/LocaleProvider.module.css.mjs +1 -2
  315. package/dist/components/utilities/Portal/Portal.cjs.js +1 -1
  316. package/dist/components/utilities/Portal/Portal.mjs +2 -2
  317. package/dist/components/utilities/Theme/Theme.cjs.js +1 -1
  318. package/dist/components/utilities/Theme/Theme.mjs +13 -13
  319. package/dist/components/utilities/Theme/Theme.module.css.mjs +1 -2
  320. package/dist/components/utilities/VisuallyHidden/VisuallyHidden.mjs +1 -2
  321. package/dist/components/utilities/VisuallyHidden/VisuallyHidden.module.css.mjs +1 -2
  322. package/dist/hooks/elementSource.cjs.js +1 -1
  323. package/dist/hooks/elementSource.mjs +4 -3
  324. package/dist/hooks/useClipboard.cjs.js +1 -1
  325. package/dist/hooks/useClipboard.mjs +2 -2
  326. package/dist/hooks/useControllableState.cjs.js +1 -1
  327. package/dist/hooks/useControllableState.mjs +2 -2
  328. package/dist/hooks/useDisclosure.cjs.js +1 -1
  329. package/dist/hooks/useDisclosure.mjs +2 -2
  330. package/dist/hooks/useDismiss.cjs.js +1 -1
  331. package/dist/hooks/useDismiss.mjs +2 -2
  332. package/dist/hooks/useElementObservers.cjs.js +1 -1
  333. package/dist/hooks/useElementObservers.mjs +2 -2
  334. package/dist/hooks/useEnvironment.cjs.js +1 -1
  335. package/dist/hooks/useEnvironment.mjs +2 -2
  336. package/dist/hooks/useFloatingPosition.cjs.js +1 -1
  337. package/dist/hooks/useFloatingPosition.mjs +2 -2
  338. package/dist/hooks/useFocusTrap.cjs.js +1 -1
  339. package/dist/hooks/useFocusTrap.mjs +4 -15
  340. package/dist/hooks/useFormReset.cjs.js +1 -1
  341. package/dist/hooks/useFormReset.mjs +2 -2
  342. package/dist/hooks/useFormValidation.cjs.js +1 -1
  343. package/dist/hooks/useFormValidation.mjs +2 -2
  344. package/dist/hooks/useHotkeys.cjs.js +1 -1
  345. package/dist/hooks/useHotkeys.mjs +2 -2
  346. package/dist/hooks/useInertOutside.cjs.js +1 -1
  347. package/dist/hooks/useInertOutside.mjs +5 -9
  348. package/dist/hooks/useMediaQuery.cjs.js +1 -1
  349. package/dist/hooks/useMediaQuery.mjs +2 -2
  350. package/dist/hooks/useMergedRef.cjs.js +1 -1
  351. package/dist/hooks/useMergedRef.mjs +2 -2
  352. package/dist/hooks/useOverlayLayer.cjs.js +1 -1
  353. package/dist/hooks/useOverlayLayer.mjs +3 -3
  354. package/dist/hooks/useResponsiveValue.cjs.js +1 -1
  355. package/dist/hooks/useResponsiveValue.mjs +2 -2
  356. package/dist/hooks/useScrollLock.cjs.js +1 -1
  357. package/dist/hooks/useScrollLock.mjs +2 -2
  358. package/dist/hooks/useStorage.cjs.js +1 -1
  359. package/dist/hooks/useStorage.mjs +2 -2
  360. package/dist/hooks/useTiming.cjs.js +1 -1
  361. package/dist/hooks/useTiming.mjs +10 -15
  362. package/dist/hooks/useVirtualizer.cjs.js +1 -1
  363. package/dist/hooks/useVirtualizer.d.ts +13 -0
  364. package/dist/hooks/useVirtualizer.mjs +93 -54
  365. package/dist/i18n/en.cjs.js +1 -1
  366. package/dist/i18n/en.mjs +194 -4
  367. package/dist/i18n/merge.mjs +1 -2
  368. package/dist/i18n/plural.mjs +1 -2
  369. package/dist/i18n/types.d.ts +240 -0
  370. package/dist/index.cjs.js +1 -1
  371. package/dist/index.mjs +114 -114
  372. package/dist/locales/ar.cjs.js +1 -1
  373. package/dist/locales/ar.mjs +230 -4
  374. package/dist/locales/bn.cjs.js +1 -1
  375. package/dist/locales/bn.mjs +167 -4
  376. package/dist/locales/cs.cjs.js +1 -1
  377. package/dist/locales/cs.mjs +212 -4
  378. package/dist/locales/da.cjs.js +1 -1
  379. package/dist/locales/da.mjs +194 -4
  380. package/dist/locales/de.cjs.js +1 -1
  381. package/dist/locales/de.mjs +194 -4
  382. package/dist/locales/el.cjs.js +1 -1
  383. package/dist/locales/el.mjs +194 -4
  384. package/dist/locales/es.cjs.js +1 -1
  385. package/dist/locales/es.mjs +194 -4
  386. package/dist/locales/fa.cjs.js +1 -1
  387. package/dist/locales/fa.mjs +167 -4
  388. package/dist/locales/fi.cjs.js +1 -1
  389. package/dist/locales/fi.mjs +194 -4
  390. package/dist/locales/fr.cjs.js +1 -1
  391. package/dist/locales/fr.mjs +194 -4
  392. package/dist/locales/he.cjs.js +1 -1
  393. package/dist/locales/he.mjs +203 -4
  394. package/dist/locales/hi.cjs.js +1 -1
  395. package/dist/locales/hi.mjs +194 -4
  396. package/dist/locales/hu.cjs.js +1 -1
  397. package/dist/locales/hu.mjs +167 -4
  398. package/dist/locales/id.cjs.js +1 -1
  399. package/dist/locales/id.mjs +167 -4
  400. package/dist/locales/it.cjs.js +1 -1
  401. package/dist/locales/it.mjs +194 -4
  402. package/dist/locales/ja.cjs.js +1 -1
  403. package/dist/locales/ja.mjs +167 -4
  404. package/dist/locales/ko.cjs.js +1 -1
  405. package/dist/locales/ko.mjs +167 -4
  406. package/dist/locales/nb.cjs.js +1 -1
  407. package/dist/locales/nb.mjs +194 -4
  408. package/dist/locales/nl.cjs.js +1 -1
  409. package/dist/locales/nl.mjs +194 -4
  410. package/dist/locales/pl.cjs.js +1 -1
  411. package/dist/locales/pl.mjs +212 -4
  412. package/dist/locales/pt-BR.cjs.js +1 -1
  413. package/dist/locales/pt-BR.mjs +194 -4
  414. package/dist/locales/ro.cjs.js +1 -1
  415. package/dist/locales/ro.mjs +203 -4
  416. package/dist/locales/ru.cjs.js +1 -1
  417. package/dist/locales/ru.mjs +212 -4
  418. package/dist/locales/sv.cjs.js +1 -1
  419. package/dist/locales/sv.mjs +194 -4
  420. package/dist/locales/th.cjs.js +1 -1
  421. package/dist/locales/th.mjs +167 -4
  422. package/dist/locales/tr.cjs.js +1 -1
  423. package/dist/locales/tr.mjs +167 -4
  424. package/dist/locales/uk.cjs.js +1 -1
  425. package/dist/locales/uk.mjs +212 -4
  426. package/dist/locales/ur.cjs.js +1 -1
  427. package/dist/locales/ur.mjs +194 -4
  428. package/dist/locales/vi.cjs.js +1 -1
  429. package/dist/locales/vi.mjs +167 -4
  430. package/dist/locales/zh-Hans.cjs.js +1 -1
  431. package/dist/locales/zh-Hans.mjs +167 -4
  432. package/dist/locales/zh-Hant.cjs.js +1 -1
  433. package/dist/locales/zh-Hant.mjs +167 -4
  434. package/dist/types/common.mjs +1 -2
  435. package/dist/utils/announce.cjs.js +1 -1
  436. package/dist/utils/announce.mjs +3 -4
  437. package/dist/utils/brandPalette.mjs +1 -2
  438. package/dist/utils/clipboard.mjs +1 -2
  439. package/dist/utils/cx.mjs +1 -2
  440. package/dist/utils/fillSlot.cjs.js +1 -1
  441. package/dist/utils/fillSlot.mjs +2 -2
  442. package/dist/utils/flattenChildren.mjs +1 -2
  443. package/dist/utils/hotkeys.mjs +1 -2
  444. package/dist/utils/intl.cjs.js +1 -0
  445. package/dist/utils/intl.d.ts +10 -0
  446. package/dist/utils/intl.mjs +15 -0
  447. package/dist/utils/refs.mjs +1 -2
  448. package/dist/utils/responsive.mjs +1 -2
  449. package/dist/utils/slot.mjs +1 -2
  450. package/dist/utils/validators.mjs +1 -2
  451. package/dist/vjdesigns-ui.css +1 -1
  452. package/dist/vjdesigns-ui.css.d.ts +2 -0
  453. package/package.json +103 -90
@@ -1 +1 @@
1
- const e=require("../../../hooks/useControllableState.cjs.js"),t=require("../../utilities/LocaleProvider/LocaleProvider.cjs.js"),n=require("../../../hooks/useMergedRef.cjs.js"),r=require("../../../utils/cx.cjs.js"),i=require("../../../utils/announce.cjs.js"),a=require("../../feedback/Spinner/Spinner.cjs.js"),o=require("../../primitives/Icon/icons.cjs.js"),s=require("../../layout/ScrollArea/ScrollArea.cjs.js"),c=require("../../forms/CheckBox/CheckBox.cjs.js"),ee=require("../../navigation/Pagination/Pagination.cjs.js"),l=require("./dataGridUtils.cjs.js"),u=require("./DataGrid.module.css.cjs.js");let d=require("react"),f=require("react/jsx-runtime");var te={compact:u.default.compact,comfortable:u.default.comfortable,spacious:u.default.spacious},ne={plain:u.default.plain,striped:u.default.striped,outline:u.default.outline},re={start:u.default.alignStart,center:u.default.alignCenter,end:u.default.alignEnd},ie=10,ae=`a[href],button:not([disabled]),input:not([disabled]):not([type='hidden']),select:not([disabled]),textarea:not([disabled]),[contenteditable='true'],[data-grid-widget]`,p=e=>Array.from(e.querySelectorAll(ae));function m(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement?![`checkbox`,`radio`,`button`,`submit`,`reset`,`color`,`file`,`image`].includes(e.type):e.getAttribute(`contenteditable`)===`true`}function h(e){let t=p(e).filter(e=>!e.hasAttribute(`data-grid-secondary`));return t.length===1&&!m(t[0])?t[0]:e}var oe=e=>{let[t,n]=(e.getAttribute(`data-cell`)??`0:0`).split(`:`).map(Number);return[t,n]},se=e=>typeof e==`number`?`${e}px`:e,ce=e=>e.id;function g({rows:m,columns:g,getRowId:_=ce,getRowLabel:le,"aria-label":v,"aria-labelledby":y,"aria-describedby":ue,sort:de,defaultSort:fe,onSortChange:pe,multiSort:me=!0,filter:b=``,selectionMode:x=`none`,selected:he,defaultSelected:ge,onSelectedChange:_e,isRowSelectable:ve,pageSize:S,page:ye,defaultPage:be=1,onPageChange:xe,manual:C=!1,rowCount:Se,onRowActivate:w,loading:T=!1,emptyState:Ce,density:we=`comfortable`,variant:Te=`outline`,hoverable:Ee=!0,stickyHeader:De=!0,maxHeight:Oe,layout:ke=`auto`,tableStyle:Ae,className:je,style:Me,ref:Ne}){let{messages:E,locale:D}=t.useLocale(),O=E.dataGrid,k=(0,d.useRef)(null),Pe=(0,d.useId)(),Fe=`${Pe}-pages`,Ie=`${Pe}-name`,Le=n.useMergedRef(k,Ne),[A,Re]=e.useControllableState({value:de,defaultValue:fe??[],onChange:pe}),[j,M]=e.useControllableState({value:he,defaultValue:ge??[],onChange:_e}),[ze,N]=e.useControllableState({value:ye,defaultValue:be,onChange:xe}),P=(0,d.useMemo)(()=>C?m.slice():l.sortRows(l.filterRows(m,b,g),A,g,D),[C,m,b,g,A,D]),F=C?Se??m.length:P.length,I=S?Math.max(1,Math.ceil(F/S)):1,L=Math.min(Math.max(1,ze),I),R=S&&!C?(L-1)*S:0,z=S&&!C?P.slice(R,R+S):P,B=S?(L-1)*S:0,V=`${b}|${JSON.stringify(A)}`,Be=(0,d.useRef)(V);(0,d.useEffect)(()=>{Be.current!==V&&(Be.current=V,S&&L!==1&&N(1))},[V,S,L,N]);let Ve=(0,d.useRef)(b);(0,d.useEffect)(()=>{if(Ve.current===b)return;let e=window.setTimeout(()=>{Ve.current=b,i.announce(F===0?O.noResults:O.rowCount(F))},600);return()=>window.clearTimeout(e)},[b,F,O]);let H=x===`multiple`,U=x!==`none`,W=+!!H,G=g.length+W,He=g.find(e=>e.rowHeader)??g[0],Ue=e=>le?.(e)??String((He&&l.getCellValue(e,He))??_(e)),We=e=>e.headerLabel??(typeof e.header==`string`?e.header:e.key),K=(0,d.useMemo)(()=>new Set(j),[j]),Ge=e=>ve?.(e)??!0,q=(0,d.useMemo)(()=>P.filter(e=>ve?.(e)??!0).map(_),[P,ve,_]),J=q.filter(e=>K.has(e)).length,Ke=q.length>0&&J===q.length,qe=J>0&&!Ke,Je=(0,d.useRef)(null),Y=(0,d.useRef)(!1),Ye=(e,t,n)=>{let r=z[e];if(!r||!Ge(r))return;let i=_(r);if(x===`single`){M(K.has(i)&&n!==!0?[]:[i]),Je.current=e;return}let a=n??!K.has(i),o=Je.current,s=[i];if(t&&o!==null&&o!==e){let[t,n]=o<e?[o,e]:[e,o];s=z.slice(t,n+1).filter(Ge).map(_)}let c=new Set(j);for(let e of s)a?c.add(e):c.delete(e);Je.current=e,M(Array.from(c))},Xe=e=>{let t=new Set(j);for(let n of q)e?t.add(n):t.delete(n);M(Array.from(t))},Ze=(e,t)=>{let n=A.find(t=>t.key===e.key),r=n?n.direction===`ascending`?`descending`:null:`ascending`,a;a=t&&me?n?r?A.map(t=>t.key===e.key?{key:t.key,direction:r}:t):A.filter(t=>t.key!==e.key):[...A,{key:e.key,direction:`ascending`}]:r?[{key:e.key,direction:r}]:[],Re(a),i.announce(r?O.sorted(We(e),r===`ascending`?O.ascending:O.descending):O.sortCleared)},Qe=z.length,[$e,et]=(0,d.useState)({r:0,c:0}),X=Math.min($e.r,Qe),Z=Math.min($e.c,G-1),[tt,Q]=(0,d.useState)(!1),[nt,rt]=(0,d.useState)(0),it=(e,t)=>k.current?.querySelector(`[data-cell="${e}:${t}"]`)??null;(0,d.useLayoutEffect)(()=>{let e=k.current;if(!e)return;for(let t of e.querySelectorAll(`[data-cell]`)){t.tabIndex=-1;for(let e of p(t))e.tabIndex=-1}let t=it(X,Z);if(t){if(tt)for(let e of p(t))e.tabIndex=0;else h(t).tabIndex=0}}),(0,d.useLayoutEffect)(()=>{if(nt===0)return;let e=it(X,Z);if(!e)return;let t=h(e);t.focus({preventScroll:!0}),(t===e?e:t).scrollIntoView?.({block:`nearest`,inline:`nearest`})},[nt]);let $=(e,t)=>{Q(!1),et({r:Math.max(0,Math.min(e,Qe)),c:Math.max(0,Math.min(t,G-1))}),rt(e=>e+1)},at=e=>{let t=e.target,n=t.closest(`[data-cell]`);if(!n||!k.current?.contains(n))return;let[r,i]=oe(n);(r!==X||i!==Z)&&et({r,c:i}),Q(t!==n&&t!==h(n))},ot=e=>{let t=e.relatedTarget;(!t||!k.current?.contains(t))&&Q(!1)},st=e=>{if(Y.current=e.shiftKey,e.defaultPrevented||e.nativeEvent.isComposing)return;let t=e.target,n=t.closest(`[data-cell]`);if(!n||!k.current?.contains(n))return;let[r,i]=oe(n);if(tt||t!==n&&t!==h(n)){if(e.key===`Escape`)e.preventDefault(),Q(!1),n.focus();else if(e.key===`Tab`){let r=p(n);if(r.length===0)return;e.preventDefault(),r[(r.indexOf(t)+(e.shiftKey?-1:1)+r.length)%r.length].focus()}return}let a=getComputedStyle(n).direction===`rtl`,o=e.ctrlKey||e.metaKey,s=r>0?z[r-1]:void 0;switch(e.key){case`ArrowDown`:e.preventDefault(),$(r+1,i);return;case`ArrowUp`:e.preventDefault(),$(r-1,i);return;case`ArrowRight`:e.preventDefault(),$(r,a?i-1:i+1);return;case`ArrowLeft`:e.preventDefault(),$(r,a?i+1:i-1);return;case`Home`:e.preventDefault(),$(o?0:r,0);return;case`End`:e.preventDefault(),$(o?Qe:r,G-1);return;case`PageDown`:e.preventDefault(),$(Math.max(1,r+ie),i);return;case`PageUp`:e.preventDefault(),$(Math.max(+(r>0),r-ie),i);return;case`Enter`:case`F2`:{let r=p(n);r.length>0&&(t===n||e.key===`F2`)?(e.preventDefault(),Q(!0),r[0].focus()):e.key===`Enter`&&t===n&&s&&w&&(e.preventDefault(),w(s));return}case` `:s&&U&&t===n&&(e.preventDefault(),Ye(r-1,e.shiftKey));return;default:o&&e.key.toLowerCase()===`a`&&H&&(e.preventDefault(),Xe(!Ke))}},ct=(0,d.useMemo)(()=>new Intl.NumberFormat(D),[D]),lt=(0,d.useMemo)(()=>new Intl.DateTimeFormat(D,{dateStyle:`medium`}),[D]),ut=e=>e==null?``:typeof e==`number`?ct.format(e):e instanceof Date?lt.format(e):String(e),dt=(e,t)=>{if(e.target.closest(ae))return;let n=z[t];x===`single`&&Ye(t,!1,!0),n&&w&&w(n)},ft=A[0],pt=!C&&b.trim()!==``,mt=!!S||H&&J>0,ht=F===0?0:B+1,gt=Math.min(F,B+z.length);return(0,f.jsxs)(`div`,{className:r.cx(u.default.frame,ne[Te],te[we],Ee&&u.default.hoverable,De&&u.default.sticky,je),style:Me,children:[(0,f.jsx)(s.ScrollArea,{scrollbars:`both`,maxHeight:Oe,shadows:!1,tabIndex:-1,className:u.default.scroll,children:(0,f.jsxs)(`table`,{ref:Le,role:`grid`,className:r.cx(u.default.table,ke===`fixed`&&u.default.fixed),style:Ae,"aria-label":v,"aria-labelledby":y,"aria-describedby":ue,"aria-rowcount":F+1,"aria-colcount":G,"aria-multiselectable":H||void 0,"aria-busy":T||void 0,onKeyDown:st,onFocus:at,onBlur:ot,onPointerDown:e=>{Y.current=e.shiftKey},children:[(0,f.jsx)(`thead`,{className:u.default.head,children:(0,f.jsxs)(`tr`,{"aria-rowindex":1,children:[H&&(0,f.jsx)(`th`,{role:`columnheader`,"data-cell":`0:0`,"data-select-column":``,"aria-colindex":1,className:r.cx(u.default.cell,u.default.selectCell),children:(0,f.jsx)(c.CheckBox,{checked:Ke,indeterminate:qe,disabled:q.length===0,onCheckedChange:e=>Xe(qe?!0:e),"aria-label":E.table.selectAll})}),g.map((e,t)=>{let n=t+W,i=A.findIndex(t=>t.key===e.key),a=i>=0?A[i].direction:null,s=a===`ascending`?o.ArrowUpIcon:a===`descending`?o.ArrowDownIcon:o.SortIcon,c=e.align??(e.numeric?`end`:`start`);return(0,f.jsxs)(`th`,{role:`columnheader`,"data-cell":`0:${n}`,"aria-colindex":n+1,scope:`col`,"aria-sort":ft?.key===e.key?ft.direction:void 0,"data-sorted":a??void 0,className:r.cx(u.default.cell,u.default.headerCell,e.sortable&&u.default.sortableCell,re[c],e.numeric&&u.default.numeric,e.headerEnd!=null&&u.default.hasHeaderEnd,e.className),style:{inlineSize:se(e.width),minInlineSize:se(e.minWidth),...e.style},children:[e.sortable?(0,f.jsxs)(`button`,{type:`button`,className:u.default.sortButton,onClick:t=>Ze(e,t.shiftKey||Y.current),children:[(0,f.jsx)(`span`,{className:u.default.sortLabel,children:e.header}),(0,f.jsxs)(`span`,{className:u.default.sortIcon,"aria-hidden":`true`,children:[(0,f.jsx)(s,{size:`sm`,strokeWidth:2.5}),A.length>1&&i>=0&&(0,f.jsx)(`span`,{className:u.default.sortPriority,children:i+1})]})]}):e.header,e.headerEnd]},e.key)})]})}),(0,f.jsx)(`tbody`,{className:u.default.body,children:z.length===0?(0,f.jsx)(`tr`,{className:u.default.emptyRow,children:(0,f.jsx)(`td`,{role:`gridcell`,colSpan:G,className:r.cx(u.default.cell,u.default.emptyCell),children:T?(0,f.jsxs)(`span`,{className:u.default.loadingInline,children:[(0,f.jsx)(a.Spinner,{size:`sm`,decorative:!0}),E.table.loading]}):Ce??(pt?O.noResults:O.empty)})}):z.map((e,t)=>{let n=_(e),i=t+1,a=K.has(n),o=Ge(e);return(0,f.jsxs)(`tr`,{"aria-rowindex":B+t+2,"aria-selected":U?a:void 0,"aria-disabled":U&&!o?!0:void 0,"data-selected":a||void 0,className:r.cx(u.default.row,(w||x===`single`)&&u.default.clickable),onClick:e=>dt(e,t),children:[H&&(0,f.jsx)(`td`,{role:`gridcell`,"data-cell":`${i}:0`,"data-select-column":``,"aria-colindex":1,className:r.cx(u.default.cell,u.default.selectCell),children:(0,f.jsx)(c.CheckBox,{checked:a,disabled:!o,onCheckedChange:e=>Ye(t,Y.current,e),"aria-label":E.table.selectRowNamed(Ue(e))})}),g.map((n,o)=>{let s=o+W,c=l.getCellValue(e,n),ee=n.cell?n.cell(e,{value:c,rowIndex:R+t,selected:a}):ut(c),d=n.align??(n.numeric?`end`:`start`),te=n.rowHeader?`th`:`td`;return(0,f.jsx)(te,{role:n.rowHeader?`rowheader`:`gridcell`,"data-cell":`${i}:${s}`,"aria-colindex":s+1,scope:n.rowHeader?`row`:void 0,className:r.cx(u.default.cell,n.rowHeader&&u.default.rowHeader,re[d],n.numeric&&u.default.numeric,n.className),style:n.style,children:ee},n.key)})]},n)})})]})}),T&&z.length>0&&(0,f.jsx)(`div`,{className:u.default.loadingOverlay,children:(0,f.jsx)(a.Spinner,{label:E.table.loading})}),(0,f.jsx)(`span`,{hidden:!0,id:Fe,children:E.pagination.nav}),v&&!y&&(0,f.jsx)(`span`,{hidden:!0,id:Ie,children:v}),mt&&(0,f.jsxs)(`div`,{className:u.default.footer,children:[(0,f.jsx)(`span`,{role:`status`,className:u.default.status,children:H&&J>0?O.selectedCount(J):null}),S?(0,f.jsxs)(`div`,{className:u.default.paging,children:[(0,f.jsx)(`span`,{className:u.default.range,children:O.range(ht,gt,F)}),I>1&&(0,f.jsx)(ee.Pagination,{size:`sm`,compact:!0,pageCount:I,page:L,onPageChange:N,"aria-labelledby":`${Fe} ${y??Ie}`})]}):null]})]})}exports.DataGrid=g,exports.compareValues=l.compareValues,exports.filterRows=l.filterRows,exports.getCellValue=l.getCellValue,exports.sortRows=l.sortRows;
1
+ "use client";const e=require("../../../hooks/useControllableState.cjs.js"),t=require("../../../hooks/useMergedRef.cjs.js"),n=require("../../../hooks/useVirtualizer.cjs.js"),r=require("../../../utils/cx.cjs.js"),i=require("../../../utils/announce.cjs.js"),a=require("../../forms/CheckBox/CheckBox.cjs.js"),o=require("../../feedback/Spinner/Spinner.cjs.js"),s=require("../../layout/ScrollArea/ScrollArea.cjs.js"),c=require("../../navigation/Pagination/Pagination.cjs.js"),l=require("../../primitives/Icon/icons.cjs.js"),u=require("../../utilities/LocaleProvider/LocaleProvider.cjs.js"),d=require("./dataGridUtils.cjs.js"),f=require("./DataGrid.module.css.cjs.js");let p=require("react"),m=require("react/jsx-runtime");var ee={compact:f.default.compact,comfortable:f.default.comfortable,spacious:f.default.spacious},te={plain:f.default.plain,striped:f.default.striped,outline:f.default.outline},ne={start:f.default.alignStart,center:f.default.alignCenter,end:f.default.alignEnd},re=10,ie=100,ae=2e3,oe={compact:37,comfortable:49,spacious:65},se=`a[href],button:not([disabled]),input:not([disabled]):not([type='hidden']),select:not([disabled]),textarea:not([disabled]),[contenteditable='true'],[data-grid-widget]`,h=e=>Array.from(e.querySelectorAll(se)),ce=`[data-cell], [data-cell] :is(${se})`;function g(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement?![`checkbox`,`radio`,`button`,`submit`,`reset`,`color`,`file`,`image`].includes(e.type):e.getAttribute(`contenteditable`)===`true`}function _(e){let t=h(e).filter(e=>!e.hasAttribute(`data-grid-secondary`));return t.length===1&&!g(t[0])?t[0]:e}var le=e=>{let[t,n]=(e.getAttribute(`data-cell`)??`0:0`).split(`:`).map(Number);return[t,n]},ue=e=>typeof e==`number`?`${e}px`:e,de=e=>e.id;function v({rows:g,columns:v,getRowId:y=de,getRowLabel:fe,"aria-label":pe,"aria-labelledby":me,"aria-describedby":he,sort:ge,defaultSort:_e,onSortChange:ve,multiSort:ye=!0,filter:be,selectionMode:b=`none`,selected:xe,defaultSelected:Se,onSelectedChange:Ce,isRowSelectable:we,pageSize:x,virtualize:Te=`auto`,page:Ee,defaultPage:De=1,onPageChange:Oe,manual:S=!1,rowCount:ke,onRowActivate:C,loading:w=!1,emptyState:Ae,density:je=`comfortable`,variant:Me=`outline`,hoverable:Ne=!0,stickyHeader:Pe=!0,maxHeight:Fe,layout:Ie,tableStyle:Le,treegrid:Re=!1,getRowProps:ze,renderRowDetail:Be,onRowsShown:Ve,onVisibleRangeChange:He,className:Ue,style:We,ref:Ge}){let{messages:T,locale:E}=u.useLocale(),D=T.dataGrid,O=(0,p.useRef)(null),Ke=(0,p.useId)(),qe=`${Ke}-pages`,Je=`${Ke}-name`,Ye=t.useMergedRef(O,Ge),[k,Xe]=e.useControllableState({value:ge,defaultValue:_e??[],onChange:ve}),[A,Ze]=e.useControllableState({value:xe,defaultValue:Se??[],onChange:Ce}),[Qe,j]=e.useControllableState({value:Ee,defaultValue:De,onChange:Oe}),M=(0,p.useMemo)(()=>S?null:d.sortIndices(g,k,v,E),[S,g,k,v,E]),N=(0,p.useMemo)(()=>d.createSearchIndex(g,v),[g,v]),P=be??``,$e=(0,p.useDeferredValue)(P),et=be!==void 0&&!S;(0,p.useEffect)(()=>{if(!et||g.length<ae||typeof window>`u`)return;let e=window.requestIdleCallback??(e=>window.setTimeout(()=>e({didTimeout:!1,timeRemaining:()=>8}),50)),t=window.cancelIdleCallback??window.clearTimeout,n=0,r=0,i=t=>{for(;n<g.length&&t.timeRemaining()>2;)for(let e=Math.min(g.length,n+1e3);n<e;n++)N.text(n);n<g.length&&(r=e(i))};return r=e(i),()=>t(r)},[et,g,N]);let F=(0,p.useMemo)(()=>{if(S||!M)return g;let e=d.searchWords($e);if(e.length===0)return M.map(e=>g[e]);let t=[];for(let n of M)d.matchesWords(N.text(n),e)&&t.push(g[n]);return t},[S,M,g,$e,N]),I=S?ke??g.length:F.length,tt=x?Math.max(1,Math.ceil(I/x)):1,L=Math.min(Math.max(1,Qe),tt),nt=x&&!S?(L-1)*x:0,R=x&&!S?F.slice(nt,nt+x):F,z=x?(L-1)*x:0,B=!Be&&(Te===`auto`?R.length>ie:Te),rt=(0,p.useRef)(null),it=(0,p.useRef)(null),[at,ot]=(0,p.useState)(0);(0,p.useLayoutEffect)(()=>{let e=it.current;if(!B||!e)return;let t=()=>ot(e.offsetHeight);if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[B]);let V=n.useVirtualizer({count:B?R.length:0,scrollElement:rt,estimateSize:oe[je],paddingStart:at,overscan:10,initialCount:30}),st=Fe??(B?`70vh`:void 0),ct=Ie??(B?`fixed`:`auto`),H=`${P}|${JSON.stringify(k)}`,lt=(0,p.useRef)(H);(0,p.useEffect)(()=>{lt.current!==H&&(lt.current=H,x&&L!==1&&j(1))},[H,x,L,j]);let ut=(0,p.useRef)(P);(0,p.useEffect)(()=>{if(ut.current===P)return;let e=window.setTimeout(()=>{ut.current=P,i.announce(I===0?D.noResults:D.rowCount(I))},600);return()=>window.clearTimeout(e)},[P,I,D]);let U=b===`multiple`,dt=b!==`none`,ft=+!!U,W=v.length+ft,pt=v.find(e=>e.rowHeader)??v[0],mt=e=>fe?.(e)??String((pt&&d.getCellValue(e,pt))??y(e)),ht=e=>e.headerLabel??(typeof e.header==`string`?e.header:e.key),G=(0,p.useMemo)(()=>new Set(A),[A]),gt=e=>we?.(e)??!0,K=(0,p.useMemo)(()=>F.filter(e=>we?.(e)??!0).map(y),[F,we,y]),q=(0,p.useMemo)(()=>{let e=0;for(let t of K)G.has(t)&&e++;return e},[K,G]),_t=K.length>0&&q===K.length,vt=q>0&&!_t,yt=(0,p.useRef)(null),J=(0,p.useRef)(!1),bt=(e,t,n)=>{let r=R[e];if(!r||!gt(r))return;let i=y(r);if(b===`single`){Ze(G.has(i)&&n!==!0?[]:[i]),yt.current=e;return}let a=n??!G.has(i),o=yt.current,s=[i];if(t&&o!==null&&o!==e){let[t,n]=o<e?[o,e]:[e,o];s=R.slice(t,n+1).filter(gt).map(y)}let c=new Set(A);for(let e of s)a?c.add(e):c.delete(e);yt.current=e,Ze(Array.from(c))},xt=e=>{let t=new Set(A);for(let n of K)e?t.add(n):t.delete(n);Ze(Array.from(t))},St=(e,t)=>{let n=k.find(t=>t.key===e.key),r=n?n.direction===`ascending`?`descending`:null:`ascending`,a;a=t&&ye?n?r?k.map(t=>t.key===e.key?{key:t.key,direction:r}:t):k.filter(t=>t.key!==e.key):[...k,{key:e.key,direction:`ascending`}]:r?[{key:e.key,direction:r}]:[],Xe(a),i.announce(r?D.sorted(ht(e),r===`ascending`?D.ascending:D.descending):D.sortCleared)},Ct=R.length,[wt,Tt]=(0,p.useState)({r:0,c:0}),Y=Math.min(wt.r,Ct),X=Math.min(wt.c,W-1),[Et,Z]=(0,p.useState)(!1),[Dt,Ot]=(0,p.useState)(0),kt=(e,t)=>O.current?.querySelector(`[data-cell="${e}:${t}"]`)??null;(0,p.useLayoutEffect)(()=>{let e=O.current;if(!e)return;let t=kt(Y,X);!t&&Y>0&&(t=e.querySelector(`tbody [data-cell$=":${X}"]`));let n=new Set;if(t){if(Et)for(let e of h(t))n.add(e);else n.add(_(t))}for(let t of e.querySelectorAll(ce)){let e=n.has(t)?`0`:`-1`;t.getAttribute(`tabindex`)!==e&&t.setAttribute(`tabindex`,e)}});let At=(0,p.useRef)(!1),jt=()=>{let e=kt(Y,X);if(!e)return!1;let t=_(e);return t.focus({preventScroll:!0}),(t===e?e:t).scrollIntoView?.({block:`nearest`,inline:`nearest`}),!0};(0,p.useLayoutEffect)(()=>{Dt!==0&&(At.current=!jt())},[Dt]),(0,p.useLayoutEffect)(()=>{At.current&&(jt()?At.current=!1:B&&Y>0&&V.scrollToIndex(Y-1))});let Q=(e,t)=>{let n=Math.max(0,Math.min(e,Ct));Z(!1),Tt({r:n,c:Math.max(0,Math.min(t,W-1))}),B&&n>0&&V.scrollToIndex(n-1),Ot(e=>e+1)},Mt=e=>{let t=e.target,n=t.closest(`[data-cell]`);if(!n||!O.current?.contains(n))return;let[r,i]=le(n);(r!==Y||i!==X)&&Tt({r,c:i}),Z(t!==n&&t!==_(n))},Nt=e=>{let t=e.relatedTarget;t&&O.current?.contains(t)||Z(!1)},Pt=e=>{if(J.current=e.shiftKey,e.defaultPrevented||e.nativeEvent.isComposing)return;let t=e.target,n=t.closest(`[data-cell]`);if(!n||!O.current?.contains(n))return;let[r,i]=le(n);if(Et||t!==n&&t!==_(n)){if(e.key===`Escape`)e.preventDefault(),Z(!1),n.focus();else if(e.key===`Tab`){let r=h(n);if(r.length===0)return;e.preventDefault(),r[(r.indexOf(t)+(e.shiftKey?-1:1)+r.length)%r.length].focus()}return}let a=getComputedStyle(n).direction===`rtl`,o=e.ctrlKey||e.metaKey,s=r>0?R[r-1]:void 0;switch(e.key){case`ArrowDown`:e.preventDefault(),Q(r+1,i);return;case`ArrowUp`:e.preventDefault(),Q(r-1,i);return;case`ArrowRight`:e.preventDefault(),Q(r,a?i-1:i+1);return;case`ArrowLeft`:e.preventDefault(),Q(r,a?i+1:i-1);return;case`Home`:e.preventDefault(),Q(o?0:r,0);return;case`End`:e.preventDefault(),Q(o?Ct:r,W-1);return;case`PageDown`:e.preventDefault(),Q(Math.max(1,r+re),i);return;case`PageUp`:e.preventDefault(),Q(Math.max(+(r>0),r-re),i);return;case`Enter`:case`F2`:{let r=h(n);r.length>0&&(t===n||e.key===`F2`)?(e.preventDefault(),Z(!0),r[0].focus()):e.key===`Enter`&&t===n&&s&&C&&(e.preventDefault(),C(s));return}case` `:s&&dt&&t===n&&(e.preventDefault(),bt(r-1,e.shiftKey));return;default:o&&e.key.toLowerCase()===`a`&&U&&(e.preventDefault(),xt(!_t))}},Ft=(0,p.useMemo)(()=>new Intl.NumberFormat(E),[E]),It=(0,p.useMemo)(()=>new Intl.DateTimeFormat(E,{dateStyle:`medium`}),[E]),Lt=e=>e==null?``:typeof e==`number`?Ft.format(e):e instanceof Date?It.format(e):String(e),Rt=(e,t)=>{if(e.target.closest(se))return;let n=R[t];b===`single`&&bt(t,!1,!0),n&&C&&C(n)},$=B?n.withExtraItems(V,Y>0?[Y-1]:[]):R.map((e,t)=>({index:t,start:0,end:0,size:0})),zt=$[$.length-1],Bt=(0,p.useRef)({});Bt.current.fn=Ve,(0,p.useEffect)(()=>{let e=Bt.current,t=e.last;t===R||t&&t.length===R.length&&t.every((e,t)=>e===R[t])||(e.last=R,e.fn?.(R))});let Vt=B?V.virtualItems:$,Ht=Vt[0]?.index??0,Ut=Vt[Vt.length-1]?.index??-1,Wt=(0,p.useRef)(He);Wt.current=He,(0,p.useEffect)(()=>{Wt.current?.({start:Ht,end:Ut})},[Ht,Ut]);let Gt=B&&zt?V.totalSize-zt.end:0,Kt=k[0],qt=!S&&$e.trim()!==``,Jt=!!x||U&&q>0,Yt=I===0?0:z+1,Xt=Math.min(I,z+R.length);return(0,m.jsxs)(`div`,{className:r.cx(f.default.frame,te[Me],ee[je],Ne&&f.default.hoverable,Pe&&f.default.sticky,Ue),style:B?{...We,"--_head-h":`${at}px`}:We,children:[(0,m.jsx)(s.ScrollArea,{scrollbars:`both`,maxHeight:st,shadows:!1,tabIndex:-1,className:f.default.scroll,viewportRef:rt,viewportClassName:B?f.default.virtualViewport:void 0,children:(0,m.jsxs)(`table`,{ref:Ye,role:Re?`treegrid`:`grid`,className:r.cx(f.default.table,ct===`fixed`&&f.default.fixed),style:Le,"aria-label":pe,"aria-labelledby":me,"aria-describedby":he,"aria-rowcount":I+1,"aria-colcount":W,"aria-multiselectable":U||void 0,"aria-busy":w||void 0,onKeyDown:Pt,onFocus:Mt,onBlur:Nt,onPointerDown:e=>{J.current=e.shiftKey},children:[(0,m.jsx)(`thead`,{ref:it,className:f.default.head,children:(0,m.jsxs)(`tr`,{"aria-rowindex":1,children:[U&&(0,m.jsx)(`th`,{role:`columnheader`,"data-cell":`0:0`,"data-select-column":``,"aria-colindex":1,className:r.cx(f.default.cell,f.default.selectCell),children:(0,m.jsx)(a.CheckBox,{checked:_t,indeterminate:vt,disabled:K.length===0,onCheckedChange:e=>xt(vt?!0:e),"aria-label":T.table.selectAll})}),v.map((e,t)=>{let n=t+ft,i=k.findIndex(t=>t.key===e.key),a=i>=0?k[i].direction:null,o=a===`ascending`?l.ArrowUpIcon:a===`descending`?l.ArrowDownIcon:l.SortIcon,s=e.align??(e.numeric?`end`:`start`);return(0,m.jsxs)(`th`,{role:`columnheader`,"data-cell":`0:${n}`,"aria-colindex":n+1,scope:`col`,"aria-sort":Kt?.key===e.key?Kt.direction:void 0,"data-sorted":a??void 0,className:r.cx(f.default.cell,f.default.headerCell,e.sortable&&f.default.sortableCell,ne[s],e.numeric&&f.default.numeric,e.headerEnd!=null&&f.default.hasHeaderEnd,e.className),style:{inlineSize:ue(e.width),minInlineSize:ue(e.minWidth),...e.style},children:[e.sortable?(0,m.jsxs)(`button`,{type:`button`,className:f.default.sortButton,onClick:t=>St(e,t.shiftKey||J.current),children:[(0,m.jsx)(`span`,{className:f.default.sortLabel,children:e.header}),(0,m.jsxs)(`span`,{className:f.default.sortIcon,"aria-hidden":`true`,children:[(0,m.jsx)(o,{size:`sm`,strokeWidth:2.5}),k.length>1&&i>=0&&(0,m.jsx)(`span`,{className:f.default.sortPriority,children:i+1})]})]}):e.header,e.headerEnd]},e.key)})]})}),(0,m.jsx)(`tbody`,{className:f.default.body,children:R.length===0?(0,m.jsx)(`tr`,{className:f.default.emptyRow,children:(0,m.jsx)(`td`,{role:`gridcell`,colSpan:W,className:r.cx(f.default.cell,f.default.emptyCell),children:w?(0,m.jsxs)(`span`,{className:f.default.loadingInline,children:[(0,m.jsx)(o.Spinner,{size:`sm`,decorative:!0}),T.table.loading]}):Ae??(qt?D.noResults:D.empty)})}):(0,m.jsxs)(m.Fragment,{children:[$.map((e,t)=>{let n=e.index,i=R[n],o=y(i),s=n+1,c=G.has(o),l=ze?.(i),u=Be?.(i),ee=gt(i),te=B?e.start-(t===0?at:$[t-1].end):0;return(0,m.jsxs)(p.Fragment,{children:[te>.5&&(0,m.jsx)(`tr`,{"aria-hidden":`true`,className:f.default.spacer,style:{blockSize:te},children:(0,m.jsx)(`td`,{colSpan:W})}),(0,m.jsxs)(`tr`,{ref:B?V.measureElement:void 0,"data-index":B?n:void 0,"data-even":(z+n)%2==1||void 0,"aria-rowindex":z+n+2,"aria-selected":dt&&l?.selectable!==!1?c:void 0,"aria-disabled":dt&&!ee&&l?.selectable!==!1?!0:void 0,"data-selected":c||void 0,"aria-level":l?.level,"aria-expanded":l?.expanded,className:r.cx(f.default.row,(C||b===`single`)&&f.default.clickable,l?.className),onClick:e=>Rt(e,n),children:[U&&(0,m.jsx)(`td`,{role:`gridcell`,"data-cell":`${s}:0`,"data-select-column":``,"aria-colindex":1,className:r.cx(f.default.cell,f.default.selectCell),children:l?.selectable!==!1&&(0,m.jsx)(a.CheckBox,{checked:c,disabled:!ee,onCheckedChange:e=>bt(n,J.current,e),"aria-label":T.table.selectRowNamed(mt(i))})}),v.map((e,t)=>{let a=t+ft,o=d.getCellValue(i,e),l=e.cell?e.cell(i,{value:o,rowIndex:nt+n,selected:c}):Lt(o),u=e.align??(e.numeric?`end`:`start`),p=e.rowHeader?`th`:`td`;return(0,m.jsx)(p,{role:e.rowHeader?`rowheader`:`gridcell`,"data-cell":`${s}:${a}`,"aria-colindex":a+1,scope:e.rowHeader?`row`:void 0,className:r.cx(f.default.cell,e.rowHeader&&f.default.rowHeader,ne[u],e.numeric&&f.default.numeric,e.className),style:e.style,children:l},e.key)})]}),u!=null&&u!==!1&&(0,m.jsx)(`tr`,{className:f.default.detailRow,children:(0,m.jsx)(`td`,{colSpan:W,className:r.cx(f.default.cell,f.default.detailCell),children:u})})]},o)}),Gt>.5&&(0,m.jsx)(`tr`,{"aria-hidden":`true`,className:f.default.spacer,style:{blockSize:Gt},children:(0,m.jsx)(`td`,{colSpan:W})})]})})]})}),w&&R.length>0&&(0,m.jsx)(`div`,{className:f.default.loadingOverlay,children:(0,m.jsx)(o.Spinner,{label:T.table.loading})}),(0,m.jsx)(`span`,{hidden:!0,id:qe,children:T.pagination.nav}),pe&&!me&&(0,m.jsx)(`span`,{hidden:!0,id:Je,children:pe}),Jt&&(0,m.jsxs)(`div`,{className:f.default.footer,children:[(0,m.jsx)(`span`,{role:`status`,className:f.default.status,children:U&&q>0?D.selectedCount(q):null}),x?(0,m.jsxs)(`div`,{className:f.default.paging,children:[(0,m.jsx)(`span`,{className:f.default.range,children:D.range(Yt,Xt,I)}),tt>1&&(0,m.jsx)(c.Pagination,{size:`sm`,compact:!0,pageCount:tt,page:L,onPageChange:j,"aria-labelledby":`${qe} ${me??Je}`})]}):null]})]})}exports.DataGrid=v,exports.compareValues=d.compareValues,exports.createSearchIndex=d.createSearchIndex,exports.filterRows=d.filterRows,exports.getCellValue=d.getCellValue,exports.sortIndices=d.sortIndices,exports.sortRows=d.sortRows;
@@ -1,7 +1,7 @@
1
1
  import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { DataGridRowId, DataGridSortItem } from './dataGridUtils';
3
3
  export type { DataGridRowId, DataGridSortItem } from './dataGridUtils';
4
- export { compareValues, filterRows, getCellValue, sortRows } from './dataGridUtils';
4
+ export { compareValues, createSearchIndex, filterRows, getCellValue, sortIndices, sortRows, } from './dataGridUtils';
5
5
  /** Horizontal alignment of a column's cells. */
6
6
  export type DataGridAlign = "start" | "center" | "end";
7
7
  /** Row height and padding. */
@@ -19,6 +19,21 @@ export interface DataGridCellContext {
19
19
  /** Whether the row is selected. */
20
20
  selected: boolean;
21
21
  }
22
+ /** Per-row additions from `getRowProps`, for hierarchical rows (groups, trees). */
23
+ export interface DataGridRowProps {
24
+ /** Depth in a hierarchy, from 1 (sets `aria-level`; use with `treegrid`). */
25
+ level?: number;
26
+ /** Whether the row's children are shown (sets `aria-expanded`). Leave unset for a row with no children. */
27
+ expanded?: boolean;
28
+ /** Class name for the row. */
29
+ className?: string;
30
+ /**
31
+ * `false` marks a row that isn't a data row (a group header): it gets no
32
+ * checkbox and no selected or disabled state. Also return false from
33
+ * `isRowSelectable` for it. @default true
34
+ */
35
+ selectable?: boolean;
36
+ }
22
37
  /** One column of a `DataGrid`. */
23
38
  export interface DataGridColumn<T> {
24
39
  /** Unique key. Also the default field read from each row (`row[key]`). */
@@ -103,6 +118,17 @@ export interface DataGridProps<T> {
103
118
  isRowSelectable?: (row: T) => boolean;
104
119
  /** Rows per page. Shows a footer with the range and `Pagination`. Without it, every row shows. */
105
120
  pageSize?: number;
121
+ /**
122
+ * Render only the rows in view (plus a few above and below), so grids of
123
+ * 100,000+ rows scroll, sort, filter, and select without delay. `"auto"`
124
+ * turns it on when more than 100 rows show at once. While it's on, the body
125
+ * scrolls inside the grid (its height is `maxHeight`, 70% of the window by
126
+ * default) and the table uses fixed layout unless you set `layout`, so
127
+ * columns keep their widths while you scroll; give columns a `width` to
128
+ * size them. Screen readers still get the full count (`aria-rowcount`)
129
+ * and each row's position (`aria-rowindex`). @default "auto"
130
+ */
131
+ virtualize?: boolean | "auto";
106
132
  /** Current page, starting at 1 (controlled). */
107
133
  page?: number;
108
134
  /** Initial page when uncontrolled. @default 1 */
@@ -135,7 +161,7 @@ export interface DataGridProps<T> {
135
161
  maxHeight?: CSSProperties["maxHeight"];
136
162
  /**
137
163
  * Table layout. `fixed` makes column widths exact (content wraps or clips
138
- * instead of widening a column). @default "auto"
164
+ * instead of widening a column). @default "auto" ("fixed" while virtualized)
139
165
  */
140
166
  layout?: "auto" | "fixed";
141
167
  /** Style for the `<table>` (for example a total width when columns are resized). */
@@ -146,6 +172,36 @@ export interface DataGridProps<T> {
146
172
  style?: CSSProperties;
147
173
  /** Ref to the `<table role="grid">`. */
148
174
  ref?: Ref<HTMLTableElement>;
175
+ /**
176
+ * Rows form a hierarchy (groups, a tree): the table becomes a
177
+ * `role="treegrid"` and each row takes the `level` and `expanded` from
178
+ * `getRowProps`. @default false
179
+ */
180
+ treegrid?: boolean;
181
+ /** Per-row level, expanded state, and class name. */
182
+ getRowProps?: (row: T) => DataGridRowProps;
183
+ /**
184
+ * Content for a full-width row under a row (master-detail), or null for
185
+ * none. Its controls are outside the grid's arrow-key navigation: Tab from
186
+ * the row moves into them. A grid with detail rows doesn't virtualize, so
187
+ * pair it with `pageSize` for long lists.
188
+ */
189
+ renderRowDetail?: (row: T) => ReactNode;
190
+ /**
191
+ * Called with the rows the grid shows, sorted, filtered, and paged, in
192
+ * display order, whenever they change (to copy a cell range, or export
193
+ * exactly what's on screen).
194
+ */
195
+ onRowsShown?: (rows: readonly T[]) => void;
196
+ /**
197
+ * Called with the range of shown rows (indexes into them, inclusive) that
198
+ * are rendered in view. With virtualization this follows scrolling, which
199
+ * is what "load more while scrolling" needs.
200
+ */
201
+ onVisibleRangeChange?: (range: {
202
+ start: number;
203
+ end: number;
204
+ }) => void;
149
205
  }
150
206
  /**
151
207
  * An interactive data table (WAI-ARIA APG "Data Grid"): sortable columns
@@ -180,4 +236,4 @@ export interface DataGridProps<T> {
180
236
  * />
181
237
  * ```
182
238
  */
183
- export declare function DataGrid<T>({ rows, columns, getRowId, getRowLabel, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, sort: sortProp, defaultSort, onSortChange, multiSort, filter, selectionMode, selected: selectedProp, defaultSelected, onSelectedChange, isRowSelectable, pageSize, page: pageProp, defaultPage, onPageChange, manual, rowCount, onRowActivate, loading, emptyState, density, variant, hoverable, stickyHeader, maxHeight, layout, tableStyle, className, style, ref, }: DataGridProps<T>): import("react").JSX.Element;
239
+ export declare function DataGrid<T>({ rows, columns, getRowId, getRowLabel, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, sort: sortProp, defaultSort, onSortChange, multiSort, filter: filterProp, selectionMode, selected: selectedProp, defaultSelected, onSelectedChange, isRowSelectable, pageSize, virtualize, page: pageProp, defaultPage, onPageChange, manual, rowCount, onRowActivate, loading, emptyState, density, variant, hoverable, stickyHeader, maxHeight, layout, tableStyle, treegrid, getRowProps, renderRowDetail, onRowsShown, onVisibleRangeChange, className, style, ref, }: DataGridProps<T>): import("react").JSX.Element;