@react-md/core 1.0.0-next.14 → 1.0.0-next.15

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 (548) hide show
  1. package/.eslintrc.cjs +8 -0
  2. package/.turbo/turbo-build.log +22 -22
  3. package/.turbo/turbo-lint.log +3 -3
  4. package/.turbo/turbo-test.log +4000 -3982
  5. package/.turbo/turbo-typecheck.log +1 -23
  6. package/CHANGELOG.md +13 -0
  7. package/coverage/clover.xml +477 -410
  8. package/coverage/coverage-final.json +5 -4
  9. package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +81 -15
  10. package/coverage/lcov-report/autocomplete/AutocompleteClearButton.tsx.html +262 -0
  11. package/coverage/lcov-report/autocomplete/FilterAutocompleteOptions.tsx.html +364 -0
  12. package/coverage/lcov-report/autocomplete/index.html +48 -18
  13. package/coverage/lcov-report/card/Card.tsx.html +349 -0
  14. package/coverage/lcov-report/card/CardSubtitle.tsx.html +265 -0
  15. package/coverage/lcov-report/card/index.html +146 -0
  16. package/coverage/lcov-report/card/styles.ts.html +682 -0
  17. package/coverage/lcov-report/form/Option.tsx.html +727 -0
  18. package/coverage/lcov-report/form/index.html +131 -0
  19. package/coverage/lcov-report/form/useListboxProvider.ts.html +253 -0
  20. package/coverage/lcov-report/index.html +22 -37
  21. package/coverage/lcov-report/src/card/Card.tsx.html +349 -0
  22. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +277 -0
  23. package/coverage/lcov-report/src/card/index.html +146 -0
  24. package/coverage/lcov-report/src/card/styles.ts.html +682 -0
  25. package/coverage/lcov-report/src/cssUtils.ts.html +787 -0
  26. package/coverage/lcov-report/src/index.html +116 -0
  27. package/coverage/lcov-report/src/transition/index.html +116 -0
  28. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +766 -0
  29. package/coverage/lcov-report/transition/index.html +116 -0
  30. package/coverage/lcov-report/transition/useCSSTransition.ts.html +766 -0
  31. package/coverage/lcov.info +572 -456
  32. package/dist/CoreProviders.js.map +1 -1
  33. package/dist/NoSsr.js.map +1 -1
  34. package/dist/RootHtml.js.map +1 -1
  35. package/dist/SsrProvider.js.map +1 -1
  36. package/dist/app-bar/AppBar.js.map +1 -1
  37. package/dist/app-bar/AppBarTitle.d.ts +8 -4
  38. package/dist/app-bar/AppBarTitle.js +3 -2
  39. package/dist/app-bar/AppBarTitle.js.map +1 -1
  40. package/dist/autocomplete/Autocomplete.js.map +1 -1
  41. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  42. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  43. package/dist/autocomplete/FilterAutocompleteOptions.js.map +1 -1
  44. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  45. package/dist/autocomplete/defaults.d.ts +2 -2
  46. package/dist/autocomplete/defaults.js +3 -3
  47. package/dist/autocomplete/defaults.js.map +1 -1
  48. package/dist/autocomplete/types.js.map +1 -1
  49. package/dist/avatar/Avatar.d.ts +1 -2
  50. package/dist/avatar/Avatar.js +1 -2
  51. package/dist/avatar/Avatar.js.map +1 -1
  52. package/dist/avatar/styles.js.map +1 -1
  53. package/dist/badge/Badge.js.map +1 -1
  54. package/dist/box/Box.js.map +1 -1
  55. package/dist/box/styles.js.map +1 -1
  56. package/dist/button/AsyncButton.js.map +1 -1
  57. package/dist/button/Button.js.map +1 -1
  58. package/dist/button/ButtonUnstyled.js.map +1 -1
  59. package/dist/button/FloatingActionButton.js.map +1 -1
  60. package/dist/button/TooltippedButton.js.map +1 -1
  61. package/dist/button/buttonStyles.js.map +1 -1
  62. package/dist/button/buttonUnstyledStyles.js.map +1 -1
  63. package/dist/card/Card.d.ts +2 -1
  64. package/dist/card/Card.js.map +1 -1
  65. package/dist/card/CardContent.js.map +1 -1
  66. package/dist/card/CardFooter.js.map +1 -1
  67. package/dist/card/CardHeader.js.map +1 -1
  68. package/dist/card/CardSubtitle.d.ts +6 -0
  69. package/dist/card/CardSubtitle.js +2 -1
  70. package/dist/card/CardSubtitle.js.map +1 -1
  71. package/dist/card/CardTitle.js.map +1 -1
  72. package/dist/card/ClickableCard.js.map +1 -1
  73. package/dist/card/styles.js +2 -4
  74. package/dist/card/styles.js.map +1 -1
  75. package/dist/chip/Chip.js.map +1 -1
  76. package/dist/chip/styles.js.map +1 -1
  77. package/dist/cssUtils.d.ts +1 -1
  78. package/dist/cssUtils.js.map +1 -1
  79. package/dist/delegateEvent.js.map +1 -1
  80. package/dist/dialog/Dialog.js.map +1 -1
  81. package/dist/dialog/DialogContainer.js.map +1 -1
  82. package/dist/dialog/DialogContent.js.map +1 -1
  83. package/dist/dialog/DialogFooter.js.map +1 -1
  84. package/dist/dialog/DialogHeader.js.map +1 -1
  85. package/dist/dialog/DialogTitle.js.map +1 -1
  86. package/dist/dialog/FixedDialog.js.map +1 -1
  87. package/dist/dialog/NestedDialogProvider.js.map +1 -1
  88. package/dist/dialog/styles.js.map +1 -1
  89. package/dist/divider/Divider.js.map +1 -1
  90. package/dist/divider/styles.js.map +1 -1
  91. package/dist/draggable/useDraggable.js.map +1 -1
  92. package/dist/draggable/utils.js.map +1 -1
  93. package/dist/expansion-panel/ExpansionList.js.map +1 -1
  94. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  95. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  96. package/dist/expansion-panel/useExpansionList.js.map +1 -1
  97. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  98. package/dist/focus/useFocusContainer.js.map +1 -1
  99. package/dist/focus/utils.js.map +1 -1
  100. package/dist/form/Checkbox.js.map +1 -1
  101. package/dist/form/Fieldset.js.map +1 -1
  102. package/dist/form/FileInput.js.map +1 -1
  103. package/dist/form/Form.js.map +1 -1
  104. package/dist/form/FormMessage.js.map +1 -1
  105. package/dist/form/FormMessageContainer.js.map +1 -1
  106. package/dist/form/FormMessageCounter.js.map +1 -1
  107. package/dist/form/InputToggle.js.map +1 -1
  108. package/dist/form/InputToggleIcon.js.map +1 -1
  109. package/dist/form/Label.js.map +1 -1
  110. package/dist/form/Legend.js.map +1 -1
  111. package/dist/form/MenuItemCheckbox.js.map +1 -1
  112. package/dist/form/MenuItemFileInput.js.map +1 -1
  113. package/dist/form/MenuItemInputToggle.js.map +1 -1
  114. package/dist/form/MenuItemRadio.js.map +1 -1
  115. package/dist/form/MenuItemSwitch.js.map +1 -1
  116. package/dist/form/MenuItemTextField.js.map +1 -1
  117. package/dist/form/NativeSelect.js.map +1 -1
  118. package/dist/form/OptGroup.js.map +1 -1
  119. package/dist/form/Option.js.map +1 -1
  120. package/dist/form/Password.js.map +1 -1
  121. package/dist/form/Radio.js.map +1 -1
  122. package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
  123. package/dist/form/Select.js.map +1 -1
  124. package/dist/form/SelectedOption.js.map +1 -1
  125. package/dist/form/Slider.js.map +1 -1
  126. package/dist/form/SliderContainer.js.map +1 -1
  127. package/dist/form/SliderMark.js.map +1 -1
  128. package/dist/form/SliderMarkLabel.js.map +1 -1
  129. package/dist/form/SliderThumb.js.map +1 -1
  130. package/dist/form/SliderTrack.js.map +1 -1
  131. package/dist/form/SliderValueMarks.js.map +1 -1
  132. package/dist/form/SliderValueTooltip.js.map +1 -1
  133. package/dist/form/Switch.js.map +1 -1
  134. package/dist/form/SwitchTrack.js.map +1 -1
  135. package/dist/form/TextArea.js.map +1 -1
  136. package/dist/form/TextField.js.map +1 -1
  137. package/dist/form/TextFieldAddon.js.map +1 -1
  138. package/dist/form/TextFieldContainer.js.map +1 -1
  139. package/dist/form/fileUtils.js.map +1 -1
  140. package/dist/form/formConfig.js.map +1 -1
  141. package/dist/form/formMessageStyles.js.map +1 -1
  142. package/dist/form/inputToggleStyles.js.map +1 -1
  143. package/dist/form/menuItemInputToggleStyles.js.map +1 -1
  144. package/dist/form/nativeSelectStyles.js.map +1 -1
  145. package/dist/form/optionStyles.js.map +1 -1
  146. package/dist/form/passwordStyles.js.map +1 -1
  147. package/dist/form/selectStyles.js.map +1 -1
  148. package/dist/form/selectUtils.js.map +1 -1
  149. package/dist/form/sliderUtils.js.map +1 -1
  150. package/dist/form/switchStyles.js.map +1 -1
  151. package/dist/form/textAreaStyles.js.map +1 -1
  152. package/dist/form/textFieldContainerStyles.js.map +1 -1
  153. package/dist/form/textFieldStyles.js.map +1 -1
  154. package/dist/form/types.js.map +1 -1
  155. package/dist/form/useCheckboxGroup.js.map +1 -1
  156. package/dist/form/useCombobox.js.map +1 -1
  157. package/dist/form/useEditableCombobox.js.map +1 -1
  158. package/dist/form/useFileUpload.js.map +1 -1
  159. package/dist/form/useFormReset.js.map +1 -1
  160. package/dist/form/useListboxProvider.js.map +1 -1
  161. package/dist/form/useNumberField.js.map +1 -1
  162. package/dist/form/useRadioGroup.js.map +1 -1
  163. package/dist/form/useRangeSlider.js.map +1 -1
  164. package/dist/form/useResizingTextArea.js.map +1 -1
  165. package/dist/form/useSelectCombobox.js.map +1 -1
  166. package/dist/form/useSlider.js.map +1 -1
  167. package/dist/form/useTextField.js.map +1 -1
  168. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  169. package/dist/form/utils.js.map +1 -1
  170. package/dist/form/validation.js.map +1 -1
  171. package/dist/hoverMode/useHoverMode.js.map +1 -1
  172. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  173. package/dist/icon/FontIcon.d.ts +10 -6
  174. package/dist/icon/FontIcon.js +1 -5
  175. package/dist/icon/FontIcon.js.map +1 -1
  176. package/dist/icon/IconRotator.js.map +1 -1
  177. package/dist/icon/MaterialIcon.d.ts +19 -2
  178. package/dist/icon/MaterialIcon.js +14 -2
  179. package/dist/icon/MaterialIcon.js.map +1 -1
  180. package/dist/icon/MaterialSymbol.js.map +1 -1
  181. package/dist/icon/SVGIcon.d.ts +3 -0
  182. package/dist/icon/SVGIcon.js.map +1 -1
  183. package/dist/icon/TextIconSpacing.js.map +1 -1
  184. package/dist/icon/iconConfig.d.ts +1 -0
  185. package/dist/icon/iconConfig.js +1 -0
  186. package/dist/icon/iconConfig.js.map +1 -1
  187. package/dist/icon/material.d.ts +1 -1
  188. package/dist/icon/material.js.map +1 -1
  189. package/dist/icon/materialConfig.js.map +1 -1
  190. package/dist/icon/styles.js.map +1 -1
  191. package/dist/interaction/Ripple.js.map +1 -1
  192. package/dist/interaction/RippleContainer.js.map +1 -1
  193. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  194. package/dist/interaction/config.js.map +1 -1
  195. package/dist/interaction/types.js.map +1 -1
  196. package/dist/interaction/useElementInteraction.js.map +1 -1
  197. package/dist/interaction/useHigherContrastChildren.js.map +1 -1
  198. package/dist/interaction/utils.js.map +1 -1
  199. package/dist/layout/LayoutAppBar.js.map +1 -1
  200. package/dist/layout/LayoutNav.js.map +1 -1
  201. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  202. package/dist/layout/Main.js.map +1 -1
  203. package/dist/layout/layoutNavStyles.js.map +1 -1
  204. package/dist/layout/layoutWindowSplitterStyles.js.map +1 -1
  205. package/dist/layout/mainStyles.js.map +1 -1
  206. package/dist/layout/useExpandableLayout.js.map +1 -1
  207. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  208. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  209. package/dist/layout/useLayoutTree.js.map +1 -1
  210. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  211. package/dist/layout/useMainTabIndex.js.map +1 -1
  212. package/dist/layout/useResizableLayout.js.map +1 -1
  213. package/dist/layout/useTemporaryLayout.js.map +1 -1
  214. package/dist/link/Link.d.ts +2 -4
  215. package/dist/link/Link.js +1 -2
  216. package/dist/link/Link.js.map +1 -1
  217. package/dist/link/SkipToMainContent.d.ts +10 -3
  218. package/dist/link/SkipToMainContent.js +4 -1
  219. package/dist/link/SkipToMainContent.js.map +1 -1
  220. package/dist/link/styles.d.ts +2 -2
  221. package/dist/link/styles.js.map +1 -1
  222. package/dist/list/List.js.map +1 -1
  223. package/dist/list/ListItem.js.map +1 -1
  224. package/dist/list/ListItemAddon.js.map +1 -1
  225. package/dist/list/ListItemChildren.js.map +1 -1
  226. package/dist/list/ListItemLink.js.map +1 -1
  227. package/dist/list/ListItemText.js.map +1 -1
  228. package/dist/list/ListSubheader.js.map +1 -1
  229. package/dist/list/getListItemHeight.js.map +1 -1
  230. package/dist/list/listItemStyles.js.map +1 -1
  231. package/dist/list/types.js.map +1 -1
  232. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  233. package/dist/media-queries/appSize.js.map +1 -1
  234. package/dist/media-queries/useMediaQuery.js.map +1 -1
  235. package/dist/menu/DropdownMenu.js.map +1 -1
  236. package/dist/menu/Menu.js.map +1 -1
  237. package/dist/menu/MenuBar.js.map +1 -1
  238. package/dist/menu/MenuButton.js.map +1 -1
  239. package/dist/menu/MenuConfigurationProvider.js.map +1 -1
  240. package/dist/menu/MenuItem.js.map +1 -1
  241. package/dist/menu/MenuItemButton.js.map +1 -1
  242. package/dist/menu/MenuItemCircularProgress.js.map +1 -1
  243. package/dist/menu/MenuItemGroup.js.map +1 -1
  244. package/dist/menu/MenuItemSeparator.js.map +1 -1
  245. package/dist/menu/MenuSheet.js.map +1 -1
  246. package/dist/menu/MenuVisibilityProvider.js.map +1 -1
  247. package/dist/menu/MenuWidget.js.map +1 -1
  248. package/dist/menu/MenuWidgetKeyboardProvider.js.map +1 -1
  249. package/dist/menu/useContextMenu.js.map +1 -1
  250. package/dist/menu/useMenuBarProvider.js.map +1 -1
  251. package/dist/menu/utils.js.map +1 -1
  252. package/dist/movement/constants.js.map +1 -1
  253. package/dist/movement/findMatchIndex.js.map +1 -1
  254. package/dist/movement/types.js.map +1 -1
  255. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  256. package/dist/movement/utils.js.map +1 -1
  257. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  258. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  259. package/dist/navigation/NavGroup.js.map +1 -1
  260. package/dist/navigation/NavItem.js.map +1 -1
  261. package/dist/navigation/NavItemButton.js.map +1 -1
  262. package/dist/navigation/NavItemLink.js.map +1 -1
  263. package/dist/navigation/NavSubheader.js.map +1 -1
  264. package/dist/navigation/Navigation.js.map +1 -1
  265. package/dist/navigation/getHrefFromParents.js.map +1 -1
  266. package/dist/navigation/navGroupStyles.js.map +1 -1
  267. package/dist/navigation/navItemStyles.js.map +1 -1
  268. package/dist/navigation/types.js.map +1 -1
  269. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  270. package/dist/overlay/Overlay.d.ts +1 -0
  271. package/dist/overlay/Overlay.js.map +1 -1
  272. package/dist/overlay/overlayStyles.js.map +1 -1
  273. package/dist/portal/Portal.d.ts +4 -0
  274. package/dist/portal/Portal.js.map +1 -1
  275. package/dist/portal/PortalContainerProvider.d.ts +8 -3
  276. package/dist/portal/PortalContainerProvider.js +1 -0
  277. package/dist/portal/PortalContainerProvider.js.map +1 -1
  278. package/dist/positioning/constants.js.map +1 -1
  279. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  280. package/dist/positioning/createVerticalPosition.js.map +1 -1
  281. package/dist/positioning/getFixedPosition.js.map +1 -1
  282. package/dist/positioning/types.js.map +1 -1
  283. package/dist/positioning/useFixedPositioning.js.map +1 -1
  284. package/dist/positioning/utils.js.map +1 -1
  285. package/dist/progress/CircularProgress.d.ts +5 -4
  286. package/dist/progress/CircularProgress.js.map +1 -1
  287. package/dist/progress/LinearProgress.js.map +1 -1
  288. package/dist/progress/getProgressA11y.js.map +1 -1
  289. package/dist/progress/types.js.map +1 -1
  290. package/dist/responsive-item/ResponsiveItemContainer.js.map +1 -1
  291. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  292. package/dist/responsive-item/styles.js.map +1 -1
  293. package/dist/scroll/ScrollLock.js.map +1 -1
  294. package/dist/scroll/getScrollbarWidth.js.map +1 -1
  295. package/dist/scroll/useScrollLock.js.map +1 -1
  296. package/dist/searching/caseInsensitive.js.map +1 -1
  297. package/dist/searching/fuzzy.js.map +1 -1
  298. package/dist/searching/toSearchQuery.js.map +1 -1
  299. package/dist/searching/types.js.map +1 -1
  300. package/dist/searching/useFuzzyMatch.js.map +1 -1
  301. package/dist/searching/utils.js.map +1 -1
  302. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  303. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  304. package/dist/segmented-button/segmentedButtonContainerStyles.js.map +1 -1
  305. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  306. package/dist/sheet/Sheet.js.map +1 -1
  307. package/dist/sheet/styles.js.map +1 -1
  308. package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
  309. package/dist/snackbar/Snackbar.js.map +1 -1
  310. package/dist/snackbar/Toast.js.map +1 -1
  311. package/dist/snackbar/ToastActionButton.js.map +1 -1
  312. package/dist/snackbar/ToastCloseButton.js.map +1 -1
  313. package/dist/snackbar/ToastContent.js.map +1 -1
  314. package/dist/snackbar/ToastManager.js.map +1 -1
  315. package/dist/snackbar/ToastManagerProvider.js.map +1 -1
  316. package/dist/snackbar/snackbarStyles.js.map +1 -1
  317. package/dist/snackbar/toastContentStyles.js.map +1 -1
  318. package/dist/snackbar/toastStyles.js.map +1 -1
  319. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  320. package/dist/suspense/CircularProgressSuspense.js.map +1 -1
  321. package/dist/suspense/NullSuspense.js.map +1 -1
  322. package/dist/table/StickyTableSection.d.ts +23 -0
  323. package/dist/table/StickyTableSection.js +56 -0
  324. package/dist/table/StickyTableSection.js.map +1 -0
  325. package/dist/table/Table.d.ts +1 -1
  326. package/dist/table/Table.js.map +1 -1
  327. package/dist/table/TableBody.d.ts +1 -1
  328. package/dist/table/TableBody.js.map +1 -1
  329. package/dist/table/TableCell.d.ts +3 -2
  330. package/dist/table/TableCell.js.map +1 -1
  331. package/dist/table/TableCellContent.d.ts +1 -2
  332. package/dist/table/TableCellContent.js.map +1 -1
  333. package/dist/table/TableCheckbox.js.map +1 -1
  334. package/dist/table/TableConfigurationProvider.d.ts +1 -73
  335. package/dist/table/TableConfigurationProvider.js.map +1 -1
  336. package/dist/table/TableContainer.js.map +1 -1
  337. package/dist/table/TableContainerProvider.js.map +1 -1
  338. package/dist/table/TableFooter.d.ts +8 -17
  339. package/dist/table/TableFooter.js +17 -80
  340. package/dist/table/TableFooter.js.map +1 -1
  341. package/dist/table/TableHeader.d.ts +8 -17
  342. package/dist/table/TableHeader.js +20 -87
  343. package/dist/table/TableHeader.js.map +1 -1
  344. package/dist/table/TableRadio.js.map +1 -1
  345. package/dist/table/TableRow.d.ts +1 -1
  346. package/dist/table/TableRow.js.map +1 -1
  347. package/dist/table/tableCellStyles.d.ts +1 -1
  348. package/dist/table/tableCellStyles.js.map +1 -1
  349. package/dist/table/tableContainerStyles.js.map +1 -1
  350. package/dist/table/tableFooterStyles.js.map +1 -1
  351. package/dist/table/tableHeaderStyles.js.map +1 -1
  352. package/dist/table/tableRowStyles.js.map +1 -1
  353. package/dist/table/tableStyles.js.map +1 -1
  354. package/dist/table/types.d.ts +89 -9
  355. package/dist/table/types.js.map +1 -1
  356. package/dist/table/useStickyTableSection.d.ts +27 -0
  357. package/dist/table/useStickyTableSection.js +84 -0
  358. package/dist/table/useStickyTableSection.js.map +1 -0
  359. package/dist/table/useTableSectionConfig.d.ts +13 -0
  360. package/dist/table/useTableSectionConfig.js +33 -0
  361. package/dist/table/useTableSectionConfig.js.map +1 -0
  362. package/dist/tabs/Tab.js.map +1 -1
  363. package/dist/tabs/TabList.js.map +1 -1
  364. package/dist/tabs/TabListScrollButton.js.map +1 -1
  365. package/dist/tabs/tabIndicatorStyles.js.map +1 -1
  366. package/dist/tabs/tabListScrollButtonStyles.js.map +1 -1
  367. package/dist/tabs/tabListStyles.js.map +1 -1
  368. package/dist/tabs/tabStyles.js.map +1 -1
  369. package/dist/tabs/useTabList.js.map +1 -1
  370. package/dist/tabs/useTabs.js.map +1 -1
  371. package/dist/tabs/utils.js.map +1 -1
  372. package/dist/test-utils/IntersectionObserver.js.map +1 -1
  373. package/dist/test-utils/ResizeObserver.js.map +1 -1
  374. package/dist/test-utils/data-testid.js.map +1 -1
  375. package/dist/test-utils/index.js.map +1 -1
  376. package/dist/test-utils/jest-setup.js.map +1 -1
  377. package/dist/test-utils/matchMedia.js.map +1 -1
  378. package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -1
  379. package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -1
  380. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  381. package/dist/test-utils/polyfills/TextEncoder.js.map +1 -1
  382. package/dist/test-utils/polyfills/index.js.map +1 -1
  383. package/dist/test-utils/polyfills/matchMedia.js.map +1 -1
  384. package/dist/test-utils/polyfills/offsetParent.js.map +1 -1
  385. package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -1
  386. package/dist/test-utils/render.js.map +1 -1
  387. package/dist/test-utils/timers.js.map +1 -1
  388. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  389. package/dist/theme/ThemeProvider.js.map +1 -1
  390. package/dist/theme/_theme.scss +2 -1
  391. package/dist/theme/colors.js.map +1 -1
  392. package/dist/theme/cssVars.js.map +1 -1
  393. package/dist/theme/types.js.map +1 -1
  394. package/dist/theme/useCSSVariables.js.map +1 -1
  395. package/dist/theme/useColorScheme.js.map +1 -1
  396. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  397. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  398. package/dist/theme/usePrefersColorScheme.js.map +1 -1
  399. package/dist/theme/utils.js.map +1 -1
  400. package/dist/tooltip/Tooltip.d.ts +20 -9
  401. package/dist/tooltip/Tooltip.js.map +1 -1
  402. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  403. package/dist/tooltip/constants.js.map +1 -1
  404. package/dist/tooltip/tooltipStyles.js.map +1 -1
  405. package/dist/tooltip/useTooltip.d.ts +30 -16
  406. package/dist/tooltip/useTooltip.js.map +1 -1
  407. package/dist/tooltip/useTooltipPosition.d.ts +2 -4
  408. package/dist/tooltip/useTooltipPosition.js.map +1 -1
  409. package/dist/tooltip/utils.js.map +1 -1
  410. package/dist/transition/CSSTransition.js.map +1 -1
  411. package/dist/transition/Collapse.js.map +1 -1
  412. package/dist/transition/CrossFade.js.map +1 -1
  413. package/dist/transition/ScaleTransition.js.map +1 -1
  414. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  415. package/dist/transition/Slide.js.map +1 -1
  416. package/dist/transition/SlideContainer.js.map +1 -1
  417. package/dist/transition/collapseStyles.js.map +1 -1
  418. package/dist/transition/config.js.map +1 -1
  419. package/dist/transition/maxWidthTransition.js.map +1 -1
  420. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  421. package/dist/transition/types.d.ts +19 -24
  422. package/dist/transition/types.js.map +1 -1
  423. package/dist/transition/useCSSTransition.js.map +1 -1
  424. package/dist/transition/useCarousel.js.map +1 -1
  425. package/dist/transition/useCollapseTransition.js.map +1 -1
  426. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  427. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  428. package/dist/transition/useScaleTransition.js.map +1 -1
  429. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  430. package/dist/transition/useSlideTransition.js.map +1 -1
  431. package/dist/transition/useTransition.d.ts +1 -0
  432. package/dist/transition/useTransition.js +1 -0
  433. package/dist/transition/useTransition.js.map +1 -1
  434. package/dist/transition/utils.js.map +1 -1
  435. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  436. package/dist/tree/Tree.js.map +1 -1
  437. package/dist/tree/TreeGroup.js.map +1 -1
  438. package/dist/tree/TreeItem.js.map +1 -1
  439. package/dist/tree/TreeItemExpander.js.map +1 -1
  440. package/dist/tree/TreeProvider.js.map +1 -1
  441. package/dist/tree/styles.js.map +1 -1
  442. package/dist/tree/types.js.map +1 -1
  443. package/dist/tree/useTree.d.ts +3 -3
  444. package/dist/tree/useTree.js.map +1 -1
  445. package/dist/tree/useTreeExpansion.js.map +1 -1
  446. package/dist/tree/useTreeItems.js.map +1 -1
  447. package/dist/tree/useTreeMovement.js.map +1 -1
  448. package/dist/tree/useTreeSelection.js.map +1 -1
  449. package/dist/tree/utils.js.map +1 -1
  450. package/dist/types.js.map +1 -1
  451. package/dist/typography/SrOnly.js.map +1 -1
  452. package/dist/typography/TextContainer.d.ts +4 -0
  453. package/dist/typography/TextContainer.js +2 -0
  454. package/dist/typography/TextContainer.js.map +1 -1
  455. package/dist/typography/Typography.d.ts +10 -0
  456. package/dist/typography/Typography.js +3 -0
  457. package/dist/typography/Typography.js.map +1 -1
  458. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  459. package/dist/typography/textContainerStyles.js.map +1 -1
  460. package/dist/typography/typographyStyles.js.map +1 -1
  461. package/dist/useAsyncFunction.js.map +1 -1
  462. package/dist/useDebouncedFunction.js.map +1 -1
  463. package/dist/useDropzone.js.map +1 -1
  464. package/dist/useElementSize.js.map +1 -1
  465. package/dist/useEnsuredId.js.map +1 -1
  466. package/dist/useEnsuredRef.js.map +1 -1
  467. package/dist/useEnsuredState.js.map +1 -1
  468. package/dist/useHtmlClassName.js.map +1 -1
  469. package/dist/useIntersectionObserver.js.map +1 -1
  470. package/dist/useIsomorphicLayoutEffect.js.map +1 -1
  471. package/dist/useLocalStorage.js.map +1 -1
  472. package/dist/useMutationObserver.js.map +1 -1
  473. package/dist/useOrientation.js.map +1 -1
  474. package/dist/usePageInactive.js.map +1 -1
  475. package/dist/useResizeListener.js.map +1 -1
  476. package/dist/useResizeObserver.js.map +1 -1
  477. package/dist/useThrottledFunction.js.map +1 -1
  478. package/dist/useToggle.js.map +1 -1
  479. package/dist/useUnmounted.js.map +1 -1
  480. package/dist/useWindowSize.js.map +1 -1
  481. package/dist/utils/RenderRecursively.js.map +1 -1
  482. package/dist/utils/alphaNumericSort.js.map +1 -1
  483. package/dist/utils/applyRef.js.map +1 -1
  484. package/dist/utils/bem.js.map +1 -1
  485. package/dist/utils/getClientPosition.js.map +1 -1
  486. package/dist/utils/getMiddleOfRange.js.map +1 -1
  487. package/dist/utils/getPercentage.js.map +1 -1
  488. package/dist/utils/getRangeDefaultValue.js.map +1 -1
  489. package/dist/utils/getRangeSteps.js.map +1 -1
  490. package/dist/utils/identity.js.map +1 -1
  491. package/dist/utils/isElementVisible.js.map +1 -1
  492. package/dist/utils/loop.js.map +1 -1
  493. package/dist/utils/nearest.js.map +1 -1
  494. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  495. package/dist/utils/randomInt.js.map +1 -1
  496. package/dist/utils/wait.js.map +1 -1
  497. package/dist/utils/withinRange.js.map +1 -1
  498. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  499. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  500. package/package.json +21 -20
  501. package/scripts/getExportMap.ts +66 -0
  502. package/scripts/tsconfig.json +1 -1
  503. package/src/app-bar/AppBarTitle.tsx +8 -4
  504. package/src/autocomplete/defaults.ts +3 -3
  505. package/src/avatar/Avatar.tsx +1 -2
  506. package/src/card/Card.tsx +2 -1
  507. package/src/card/CardSubtitle.tsx +9 -0
  508. package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
  509. package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
  510. package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
  511. package/src/card/styles.ts +2 -6
  512. package/src/cssUtils.ts +1 -1
  513. package/src/icon/FontIcon.tsx +19 -9
  514. package/src/icon/MaterialIcon.tsx +23 -4
  515. package/src/icon/SVGIcon.tsx +3 -0
  516. package/src/icon/iconConfig.tsx +1 -0
  517. package/src/icon/material.ts +276 -19
  518. package/src/link/Link.tsx +2 -4
  519. package/src/link/SkipToMainContent.tsx +11 -4
  520. package/src/link/styles.ts +2 -2
  521. package/src/overlay/Overlay.tsx +1 -0
  522. package/src/portal/Portal.tsx +5 -0
  523. package/src/portal/PortalContainerProvider.tsx +16 -7
  524. package/src/progress/CircularProgress.tsx +5 -4
  525. package/src/table/StickyTableSection.tsx +91 -0
  526. package/src/table/Table.tsx +2 -5
  527. package/src/table/TableBody.tsx +1 -2
  528. package/src/table/TableCell.tsx +3 -5
  529. package/src/table/TableCellContent.tsx +1 -3
  530. package/src/table/TableConfigurationProvider.tsx +1 -86
  531. package/src/table/TableFooter.tsx +19 -116
  532. package/src/table/TableHeader.tsx +20 -118
  533. package/src/table/TableRow.tsx +2 -4
  534. package/src/table/__tests__/Table.tsx +9 -8
  535. package/src/table/tableCellStyles.ts +1 -1
  536. package/src/table/types.ts +105 -10
  537. package/src/table/useStickyTableSection.tsx +126 -0
  538. package/src/table/useTableSectionConfig.ts +45 -0
  539. package/src/theme/_theme.scss +2 -1
  540. package/src/tooltip/Tooltip.tsx +24 -8
  541. package/src/tooltip/useTooltip.ts +52 -27
  542. package/src/tooltip/useTooltipPosition.ts +2 -4
  543. package/src/transition/types.ts +23 -27
  544. package/src/transition/useTransition.ts +1 -0
  545. package/src/tree/useTree.ts +3 -5
  546. package/src/typography/TextContainer.tsx +4 -0
  547. package/src/typography/Typography.tsx +10 -0
  548. package/src/useResizeListener.ts +1 -1
package/src/link/Link.tsx CHANGED
@@ -27,8 +27,7 @@ export type CustomLinkComponent =
27
27
  * @since 6.0.0 Removed the `component` prop since all you need for link
28
28
  * behavior is `className="rmd-link"`.
29
29
  * @since 6.0.0 The `href` prop is required.
30
- * @since 6.0.0 Removed the `flexCentered` prop since it is now the default
31
- * styles.
30
+ * @since 6.0.0 Renamed `flexCentered` to `flex`.
32
31
  */
33
32
  export interface LinkProps
34
33
  extends AnchorHTMLAttributes<HTMLAnchorElement>,
@@ -72,8 +71,7 @@ export interface LinkProps
72
71
  * @since 6.0.0 Removed the `component` prop since all you need for link
73
72
  * behavior is `className="rmd-link"`.
74
73
  * @since 6.0.0 The `href` prop is required.
75
- * @since 6.0.0 Removed the `flexCentered` prop since it is now the default
76
- * styles.
74
+ * @since 6.0.0 Renamed `flexCentered` to `flex`.
77
75
  */
78
76
  export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
79
77
  function Link(props, ref) {
@@ -3,7 +3,7 @@ import { forwardRef, useEffect, useRef, type ReactNode } from "react";
3
3
  import { Link, type LinkProps } from "./Link.js";
4
4
  import {
5
5
  skipToMainContent,
6
- type SKipToMainContentClassNameOptions,
6
+ type SkipToMainContentClassNameOptions,
7
7
  } from "./styles.js";
8
8
 
9
9
  const noop = (): void => {
@@ -16,11 +16,15 @@ const getMainElement = (mainId: string): HTMLElement | null =>
16
16
  : document.querySelector<HTMLElement>('main,[role="main"]');
17
17
 
18
18
  /**
19
- * @since 6.0.0 The {@link mainId} is optional
19
+ * @since 6.0.0 The `mainId` is optional
20
20
  */
21
21
  export interface SkipToMainContentProps
22
22
  extends Omit<LinkProps, "href">,
23
- SKipToMainContentClassNameOptions {
23
+ SkipToMainContentClassNameOptions {
24
+ /**
25
+ * @since 6.0.0 Changed default value from `"skip-to-main-content"`
26
+ * @defaultValue `"skip-to-main"`
27
+ */
24
28
  id?: string;
25
29
 
26
30
  /**
@@ -42,6 +46,9 @@ export interface SkipToMainContentProps
42
46
  /**
43
47
  * **Client Component**
44
48
  *
49
+ * @since 6.0.0 Changed the default `id` from `"skip-to-main-content"` to
50
+ * `"skip-to-main"`.
51
+ * @since 6.0.0 The `mainId` prop is optional
45
52
  * @since 6.0.0 Throws an error after rendering if no main element can be found
46
53
  * with the provided `mainId` in development mode. The previous behavior would
47
54
  * only log an error after being clicked.
@@ -56,7 +63,7 @@ export const SkipToMainContent = forwardRef<
56
63
  children = "Skip to main content",
57
64
  mainId = "",
58
65
  onClick = noop,
59
- unstyled = false,
66
+ unstyled,
60
67
  ...remaining
61
68
  } = props;
62
69
 
@@ -24,7 +24,7 @@ export function link(options: LinkClassNameOptions = {}): string {
24
24
  }
25
25
 
26
26
  /** @since 6.0.0 */
27
- export interface SKipToMainContentClassNameOptions {
27
+ export interface SkipToMainContentClassNameOptions {
28
28
  className?: string;
29
29
 
30
30
  /**
@@ -37,7 +37,7 @@ export interface SKipToMainContentClassNameOptions {
37
37
  * @since 6.0.0
38
38
  */
39
39
  export function skipToMainContent(
40
- options: SKipToMainContentClassNameOptions = {}
40
+ options: SkipToMainContentClassNameOptions = {}
41
41
  ): string {
42
42
  const { unstyled = false, className } = options;
43
43
 
@@ -16,6 +16,7 @@ import {
16
16
 
17
17
  /**
18
18
  * @since 6.0.0 Added `align` and `justify` props.
19
+ * @since 6.0.0 Renamed `hidden` to `noOpacity`.
19
20
  */
20
21
  export interface OverlayProps
21
22
  extends HTMLAttributes<HTMLSpanElement>,
@@ -4,8 +4,13 @@ import { createPortal } from "react-dom";
4
4
 
5
5
  import { usePortalContainer } from "./PortalContainerProvider.js";
6
6
 
7
+ /**
8
+ * @since 6.0.0 Removed the `into` and `intoId` props. Use the
9
+ * `PortalContainerProvider` instead.
10
+ */
7
11
  export interface PortalProps {
8
12
  children: ReactNode;
13
+
9
14
  /**
10
15
  * Setting this to `true` will disable the portal behavior and just render
11
16
  * the `children` in the normal DOM tree.
@@ -13,16 +13,24 @@ import {
13
13
  * @internal
14
14
  * @since 6.0.0
15
15
  */
16
- export type PortalContainer = Element | DocumentFragment | null;
16
+ export type PortalContainerNode = Element | DocumentFragment | null;
17
+
18
+ /**
19
+ * @internal
20
+ * @since 6.0.0
21
+ */
22
+ export type PortalContainer =
23
+ | PortalContainerNode
24
+ | RefObject<PortalContainerNode>;
17
25
 
18
26
  export const PORTAL_CONTAINER_ID = "rmd-portal-container";
19
27
 
20
- let portalContainer: PortalContainer = null;
28
+ let portalContainer: PortalContainerNode = null;
21
29
 
22
- const getPortalContainer = (): PortalContainer =>
30
+ const getPortalContainer = (): PortalContainerNode =>
23
31
  typeof window === "undefined" ? null : document.body;
24
32
 
25
- const context = createContext<PortalContainer>(getPortalContainer());
33
+ const context = createContext<PortalContainerNode>(getPortalContainer());
26
34
  context.displayName = "PortalContainer";
27
35
  const { Provider } = context;
28
36
 
@@ -30,7 +38,7 @@ const { Provider } = context;
30
38
  * @internal
31
39
  * @since 6.0.0
32
40
  */
33
- export function usePortalContainer(): PortalContainer {
41
+ export function usePortalContainer(): PortalContainerNode {
34
42
  return useContext(context);
35
43
  }
36
44
 
@@ -41,7 +49,7 @@ export interface PortalContainerProviderProps {
41
49
  * `<div id="rmd-portal-container"></div>` will be added as the last child to
42
50
  * the `document.body` and be used as the container element.
43
51
  */
44
- container?: PortalContainer | RefObject<PortalContainer>;
52
+ container?: PortalContainer;
45
53
  children: ReactNode;
46
54
  }
47
55
 
@@ -60,7 +68,7 @@ export function PortalContainerProvider(
60
68
  props: PortalContainerProviderProps
61
69
  ): ReactElement {
62
70
  const { container, children } = props;
63
- const [value, setValue] = useState<PortalContainer>(portalContainer);
71
+ const [value, setValue] = useState<PortalContainerNode>(portalContainer);
64
72
  useEffect(() => {
65
73
  if (container && "current" in container) {
66
74
  setValue(container.current);
@@ -68,6 +76,7 @@ export function PortalContainerProvider(
68
76
  }
69
77
 
70
78
  if (typeof container !== "undefined") {
79
+ setValue(container);
71
80
  return;
72
81
  }
73
82
 
@@ -13,11 +13,11 @@ import { getPercentage } from "../utils/getPercentage.js";
13
13
  import { type ProgressProps } from "./types.js";
14
14
 
15
15
  /**
16
- * @since 6.0.0
17
- * Removed the `determinateRotateDegrees` prop since the determinate state no
16
+ * @since 6.0.0 Added the `disableShrink` prop.
17
+ * @since 6.0.0 Renamed `small` to `dense`.
18
+ * @since 6.0.0 Renamed `centered` to `disableCentered`.
19
+ * @since 6.0.0 Removed the `maxRotation` prop since the determinate state no
18
20
  * longer rotates while increasing value.
19
- * Added the `disableShrink` prop.
20
- * Renamed the `small` prop to `dense` to match other components.
21
21
  */
22
22
  export interface CircularProgressProps
23
23
  extends Omit<HTMLAttributes<HTMLSpanElement>, "id">,
@@ -88,6 +88,7 @@ export interface CircularProgressProps
88
88
  * margins.
89
89
  *
90
90
  * @defaultValue `false`
91
+ * @since 6.0.0 Renamed from `centered`
91
92
  */
92
93
  disableCentered?: boolean;
93
94
 
@@ -0,0 +1,91 @@
1
+ "use client";
2
+ import { forwardRef, type HTMLAttributes } from "react";
3
+ import { TableConfigProvider } from "./TableConfigurationProvider.js";
4
+ import { tableFooter } from "./tableFooterStyles.js";
5
+ import { tableHeader } from "./tableHeaderStyles.js";
6
+ import {
7
+ type TableSectionConfiguration,
8
+ type TableStickySectionConfiguration,
9
+ } from "./types.js";
10
+ import { useStickyTableSection } from "./useStickyTableSection.js";
11
+ import { useTableSectionConfig } from "./useTableSectionConfig.js";
12
+
13
+ /** @since 6.0.0 */
14
+ export interface StickyTableSectionProps
15
+ extends HTMLAttributes<HTMLTableSectionElement>,
16
+ TableStickySectionConfiguration,
17
+ TableSectionConfiguration {
18
+ type: "header" | "footer";
19
+
20
+ /**
21
+ * An optional className to use when the sticky section is covering other rows
22
+ * (`active`). When this is defined, the default
23
+ * `rmd-thead--sticky-active`/`rmd-tfoot--sticky-active` will no longer be
24
+ * applied.
25
+ */
26
+ stickyActiveClassName?: string;
27
+ }
28
+
29
+ /**
30
+ * **Client Component**
31
+ *
32
+ * This component is used to render a sticky `<thead>`/`<tfoot>` that
33
+ * dynamically applies styles whenever the `<thead>`/`<tfoot>` are covering
34
+ * content in the table.
35
+ *
36
+ * @since 6.0.0
37
+ */
38
+ export const StickyTableSection = forwardRef<
39
+ HTMLTableSectionElement,
40
+ StickyTableSectionProps
41
+ >(function StickyTableSection(props, ref) {
42
+ const {
43
+ type,
44
+ className,
45
+ hoverable,
46
+ lineWrap,
47
+ children,
48
+ stickyOptions,
49
+ isStickyActive,
50
+ disableStickyStyles = false,
51
+ stickyActiveClassName,
52
+ ...remaining
53
+ } = props;
54
+
55
+ const isHeader = type === "header";
56
+ const Section = isHeader ? "thead" : "tfoot";
57
+ const styles = isHeader ? tableHeader : tableFooter;
58
+ const { tbody, sectionRef, stickyActive } = useStickyTableSection({
59
+ ref,
60
+ type,
61
+ stickyOptions,
62
+ isStickyActive,
63
+ disableStickyStyles,
64
+ stickyActiveClassName,
65
+ });
66
+ const config = useTableSectionConfig({
67
+ type,
68
+ lineWrap,
69
+ hoverable,
70
+ });
71
+
72
+ return (
73
+ <TableConfigProvider value={config}>
74
+ {!isHeader && tbody}
75
+ <Section
76
+ {...remaining}
77
+ ref={sectionRef}
78
+ className={styles({
79
+ className,
80
+ dense: config.dense,
81
+ sticky: true,
82
+ stickyActive,
83
+ stickyActiveClassName,
84
+ })}
85
+ >
86
+ {children}
87
+ </Section>
88
+ {isHeader && tbody}
89
+ </TableConfigProvider>
90
+ );
91
+ });
@@ -1,11 +1,8 @@
1
1
  "use client";
2
2
  import { forwardRef, useMemo, type TableHTMLAttributes } from "react";
3
- import {
4
- TableConfigProvider,
5
- type TableConfigContext,
6
- type TableConfiguration,
7
- } from "./TableConfigurationProvider.js";
3
+ import { TableConfigProvider } from "./TableConfigurationProvider.js";
8
4
  import { table } from "./tableStyles.js";
5
+ import { type TableConfigContext, type TableConfiguration } from "./types.js";
9
6
 
10
7
  declare module "react" {
11
8
  interface CSSProperties {
@@ -4,9 +4,8 @@ import { forwardRef, useMemo, type HTMLAttributes } from "react";
4
4
  import {
5
5
  TableConfigProvider,
6
6
  useTableConfig,
7
- type TableConfig,
8
- type TableConfigContext,
9
7
  } from "./TableConfigurationProvider.js";
8
+ import { type TableConfig, type TableConfigContext } from "./types.js";
10
9
 
11
10
  export interface TableBodyProps
12
11
  extends HTMLAttributes<HTMLTableSectionElement>,
@@ -10,14 +10,11 @@ import { getIcon } from "../icon/iconConfig.js";
10
10
  import { type PropsWithRef } from "../types.js";
11
11
  import {
12
12
  TableCellContent,
13
- type SortOrder,
14
13
  type TableCellContentsIconRotatorProps,
15
14
  } from "./TableCellContent.js";
16
- import {
17
- useTableConfig,
18
- type TableCellConfig,
19
- } from "./TableConfigurationProvider.js";
15
+ import { useTableConfig } from "./TableConfigurationProvider.js";
20
16
  import { tableCell } from "./tableCellStyles.js";
17
+ import { type SortOrder, type TableCellConfig } from "./types.js";
21
18
 
22
19
  export type TableCellAttributes = Omit<
23
20
  | TdHTMLAttributes<HTMLTableCellElement>
@@ -67,6 +64,7 @@ export interface TableCellOptions extends TableCellConfig {
67
64
  /**
68
65
  * @since 6.0.0 Removed the `colSpan="100%"` support since `colSpan`
69
66
  * really only supports numbers.
67
+ * @since 6.0.0 Removed `disablePadding` in favor of `padding`.
70
68
  */
71
69
  export interface TableCellProps extends TableCellAttributes, TableCellOptions {
72
70
  /**
@@ -3,9 +3,7 @@ import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from "react";
3
3
  import { ButtonUnstyled } from "../button/ButtonUnstyled.js";
4
4
  import { IconRotator, type IconRotatorProps } from "../icon/IconRotator.js";
5
5
  import { bem } from "../utils/bem.js";
6
- import { type TableCellHorizontalAlignment } from "./TableConfigurationProvider.js";
7
-
8
- export type SortOrder = "ascending" | "descending" | "none" | "other";
6
+ import { type SortOrder, type TableCellHorizontalAlignment } from "./types.js";
9
7
 
10
8
  /**
11
9
  * @since 6.0.0
@@ -1,91 +1,6 @@
1
1
  "use client";
2
2
  import { createContext, useContext } from "react";
3
-
4
- // interfaces that are "public" should be the full word `Configuration` while
5
- // the private/internal should just be `Config`. "Great" naming convention!
6
-
7
- export interface TableRowConfiguration {
8
- /**
9
- * Set to `true` if rows should no longer change background color while
10
- * hovered.
11
- *
12
- * @defaultValue `false`
13
- */
14
- disableHover?: boolean;
15
-
16
- /**
17
- * Set to `true` if the rows in the `TableBody` should no longer have borders
18
- * applied.
19
- *
20
- * @defaultValue `false`
21
- */
22
- disableBorders?: boolean;
23
- }
24
-
25
- /**
26
- * The horizontal alignment for the content within a cell.
27
- *
28
- * Note: Table default behavior is to align to the left.
29
- */
30
- export type TableCellHorizontalAlignment = "left" | "center" | "right";
31
-
32
- /**
33
- * The vertical alignment for the content within a cell.
34
- *
35
- * Note: When this is set to `"top"` or `"bottom"`, `padding-top` or
36
- * `padding-bottom` will also be applied due to how styling tables work.
37
- */
38
- export type TableCellVerticalAlignment = "top" | "middle" | "bottom";
39
-
40
- export interface TableCellConfiguration {
41
- hAlign?: TableCellHorizontalAlignment;
42
- vAlign?: TableCellVerticalAlignment;
43
-
44
- /**
45
- * Set this to `true` to allow `TableCell` content to line wrap.
46
- *
47
- * @defaultValue `false`
48
- */
49
- lineWrap?: boolean;
50
- }
51
-
52
- /**
53
- * @internal
54
- */
55
- export interface TableCellConfig extends TableCellConfiguration {
56
- /**
57
- * Boolean if all the `TableCell` components should be rendered as a `<th>`
58
- * instead of a `<td>`. This is really just a convenience prop for the
59
- * `TableHeader` component so the user of `react-md` doesn't need to keep
60
- * setting the `type="th"` fot the `TableCell` if using the low-level
61
- * components.
62
- *
63
- * @internal
64
- */
65
- header?: boolean;
66
- }
67
-
68
- export interface TableConfig extends TableRowConfiguration, TableCellConfig {
69
- /**
70
- * Set this to `true` to decrease the height of all cells within the table.
71
- *
72
- * @defaultValue `false`
73
- */
74
- dense?: boolean;
75
- }
76
-
77
- export interface TableConfiguration extends TableConfig {
78
- /**
79
- * Set this to `true` to allow the table to span the full width of the
80
- * container element instead of having the width be determined by the content
81
- * within the table.
82
- *
83
- * @defaultValue `false`
84
- */
85
- fullWidth?: boolean;
86
- }
87
-
88
- export type TableConfigContext = Required<TableConfig>;
3
+ import { type TableConfig, type TableConfigContext } from "./types.js";
89
4
 
90
5
  const context = createContext<TableConfigContext>({
91
6
  dense: false,
@@ -1,63 +1,27 @@
1
1
  "use client";
2
- import {
3
- forwardRef,
4
- useCallback,
5
- useMemo,
6
- useState,
7
- type HTMLAttributes,
8
- } from "react";
9
- import { useEnsuredRef } from "../useEnsuredRef.js";
10
- import { useIntersectionObserver } from "../useIntersectionObserver.js";
11
- import {
12
- TableConfigProvider,
13
- useTableConfig,
14
- type TableCellConfig,
15
- type TableConfigContext,
16
- } from "./TableConfigurationProvider.js";
17
- import { useTableContainer } from "./TableContainerProvider.js";
2
+ import { forwardRef, type HTMLAttributes } from "react";
3
+ import { TableConfigProvider } from "./TableConfigurationProvider.js";
18
4
  import { tableFooter } from "./tableFooterStyles.js";
19
- import {
20
- type IsStickyTableSectionActive,
21
- type TableStickySectionProps,
22
- } from "./types.js";
5
+ import { type TableSectionConfiguration } from "./types.js";
6
+ import { useTableSectionConfig } from "./useTableSectionConfig.js";
23
7
 
24
- /**
25
- * @since 6.0.0
26
- */
27
- export const isTableFooterStickyActive: IsStickyTableSectionActive = (
28
- entry,
29
- isInTableContainer
30
- ) => {
31
- const { intersectionRatio, boundingClientRect, isIntersecting } = entry;
32
- if (isInTableContainer) {
33
- return !isIntersecting;
34
- }
35
-
36
- return intersectionRatio < 1 && boundingClientRect.top >= 0;
37
- };
38
- /**
39
- * @since 6.0.0 Added support for "sticky-active" state.
40
- */
41
8
  export interface TableFooterProps
42
9
  extends HTMLAttributes<HTMLTableSectionElement>,
43
- Pick<TableCellConfig, "lineWrap">,
44
- TableStickySectionProps {
10
+ TableSectionConfiguration {
45
11
  /**
46
- * This is a rename of the `disableHover` of the `TableConfig` since table
47
- * footers are not hoverable by default. This prop can be enabled to add the
48
- * row hover color within table footers, but it is not really recommended.
12
+ * NOTE: It is recommended to use the `StickyTableSection` component instead
13
+ * of enabling this prop since it supports dynamically adding styles while the
14
+ * header covering table rows.
15
+ *
16
+ * Set this to `true` to enable the sticky behavior.
49
17
  *
50
18
  * @defaultValue `false`
51
19
  */
52
- hoverable?: boolean;
53
-
54
- /** @defaultValue {@link isTableFooterStickyActive} */
55
- isStickyActive?: IsStickyTableSectionActive;
20
+ sticky?: boolean;
56
21
  }
57
22
 
58
23
  /**
59
24
  * **Client Component**
60
- * TODO: Create separate useStickyTableFooter + StickyTableFooter component
61
25
  *
62
26
  * Creates a `<tfoot>` element with some basic styles. This component will
63
27
  * disable the hover effect and line wrapping by default, but the hover effect
@@ -68,81 +32,20 @@ export const TableFooter = forwardRef<
68
32
  HTMLTableSectionElement,
69
33
  TableFooterProps
70
34
  >(function TableFooter(props, propRef) {
71
- const {
72
- className,
73
- hoverable = false,
74
- lineWrap: propLineWrap,
75
- children,
76
- sticky = false,
77
- stickyOptions,
78
- isStickyActive = isTableFooterStickyActive,
79
- disableStickyStyles = false,
80
- stickyActiveClassName,
81
- ...remaining
82
- } = props;
83
-
84
- // update the table configuration with the custom overrides for the `<tfoot>`
85
- const { dense, hAlign, vAlign, lineWrap, disableHover, disableBorders } =
86
- useTableConfig({
87
- lineWrap: propLineWrap,
88
- disableHover: !hoverable,
89
- });
90
-
91
- const configuration = useMemo<TableConfigContext>(
92
- () => ({
93
- dense,
94
- header: false,
95
- hAlign,
96
- vAlign,
97
- lineWrap,
98
- disableBorders,
99
- disableHover,
100
- }),
101
- [dense, hAlign, vAlign, lineWrap, disableBorders, disableHover]
102
- );
103
-
104
- const [tfootRef, tfootRefCallback] = useEnsuredRef(propRef);
105
- const { exists, containerRef } = useTableContainer();
106
- const [stickyActive, setStickyActive] = useState(false);
107
- const targetRef = useIntersectionObserver<
108
- HTMLTableSectionElement | HTMLElement
109
- >({
110
- ref: exists ? undefined : tfootRefCallback,
111
- root: containerRef,
112
- disabled: !sticky || disableStickyStyles,
113
- threshold: exists ? 0 : 1,
114
- getRootMargin: useCallback(() => {
115
- const topOffset =
116
- exists && tfootRef.current ? tfootRef.current.offsetHeight - 1 : 1;
35
+ const { className, hoverable, lineWrap, children, ...remaining } = props;
117
36
 
118
- return `0px 0px -${topOffset}px 0px`;
119
- }, [exists, tfootRef]),
120
- onUpdate: useCallback(
121
- ([entry]) => {
122
- setStickyActive(isStickyActive(entry, exists));
123
- },
124
- [exists, isStickyActive]
125
- ),
126
- // allow the user defined sticky options to override the default behavior
127
- ...stickyOptions,
37
+ const config = useTableSectionConfig({
38
+ type: "footer",
39
+ lineWrap,
40
+ hoverable,
128
41
  });
129
42
 
130
43
  return (
131
- <TableConfigProvider value={configuration}>
132
- {exists && sticky && !disableStickyStyles && (
133
- // rendering a `<tbody>` since it is valid to have 0-many in a table
134
- // https://html.spec.whatwg.org/multipage/tables.html#the-table-element
135
- <tbody aria-hidden ref={targetRef} />
136
- )}
44
+ <TableConfigProvider value={config}>
137
45
  <tfoot
138
46
  {...remaining}
139
- ref={exists ? tfootRefCallback : targetRef}
140
- className={tableFooter({
141
- className,
142
- sticky,
143
- stickyActive,
144
- stickyActiveClassName,
145
- })}
47
+ ref={propRef}
48
+ className={tableFooter({ className })}
146
49
  >
147
50
  {children}
148
51
  </tfoot>