@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
@@ -1,61 +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 { tableHeader } from "./tableHeaderStyles.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 isTableHeaderStickyActive: IsStickyTableSectionActive = (
28
- entry
29
- ) => {
30
- return (
31
- entry.intersectionRatio < 1 &&
32
- entry.boundingClientRect.bottom <= window.innerHeight
33
- );
34
- };
35
-
36
- /**
37
- * @since 6.0.0 Added support for "sticky-active" state.
38
- */
39
8
  export interface TableHeaderProps
40
9
  extends HTMLAttributes<HTMLTableSectionElement>,
41
- Pick<TableCellConfig, "lineWrap">,
42
- TableStickySectionProps {
10
+ TableSectionConfiguration {
43
11
  /**
44
- * This is a rename of the `disableHover` of the `TableConfig` since table
45
- * headers are not hoverable by default. This prop can be enabled to add the
46
- * row hover color within table headers, 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.
47
17
  *
48
18
  * @defaultValue `false`
49
19
  */
50
- hoverable?: boolean;
51
-
52
- /** @defaultValue {@link isTableHeaderStickyActive} */
53
- isStickyActive?: IsStickyTableSectionActive;
20
+ sticky?: boolean;
54
21
  }
55
22
 
56
23
  /**
57
24
  * **Client Component**
58
- * TODO: Create separate useStickyTableHeader + StickyTableHeader component
59
25
  *
60
26
  * Creates a `<thead>` element with some basic styles. This component will also
61
27
  * update the table configuration so that all the `TableCell` children will
@@ -68,93 +34,29 @@ export const TableHeader = forwardRef<
68
34
  HTMLTableSectionElement,
69
35
  TableHeaderProps
70
36
  >(function TableHeader(props, propRef) {
71
- const {
72
- className,
73
- hoverable = false,
74
- lineWrap: propLineWrap,
75
- children,
76
- sticky = false,
77
- stickyOptions,
78
- isStickyActive = isTableHeaderStickyActive,
79
- disableStickyStyles = false,
80
- stickyActiveClassName,
81
- ...remaining
82
- } = props;
83
-
84
- // update the table configuration with the custom overrides for the `<thead>`
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: true,
95
- hAlign,
96
- vAlign,
97
- lineWrap,
98
- disableBorders,
99
- disableHover,
100
- }),
101
- [dense, hAlign, vAlign, lineWrap, disableBorders, disableHover]
102
- );
103
-
104
- const [theadRef, theadRefCallback] = useEnsuredRef(propRef);
105
- const { exists, containerRef } = useTableContainer();
106
- const [stickyActive, setStickyActive] = useState(false);
107
- const targetRef = useIntersectionObserver({
108
- ref: exists ? undefined : theadRefCallback,
109
- root: containerRef,
110
- disabled: !sticky || disableStickyStyles,
111
- threshold: exists ? 0 : 1,
112
- getRootMargin: useCallback(() => {
113
- const thead = theadRef.current;
114
- if (!thead) {
115
- return;
116
- }
117
-
118
- let topOffset: number;
119
- if (exists) {
120
- topOffset = thead.offsetHeight - 1;
121
- } else {
122
- const top = parseFloat(window.getComputedStyle(thead).top);
123
- topOffset = Number.isNaN(top) ? 1 : top + 1;
124
- }
37
+ const { className, sticky, lineWrap, hoverable, children, ...remaining } =
38
+ props;
125
39
 
126
- return `-${topOffset}px 0px 0px`;
127
- }, [exists, theadRef]),
128
- onUpdate: useCallback(
129
- ([entry]) => {
130
- setStickyActive(isStickyActive(entry, exists));
131
- },
132
- [exists, isStickyActive]
133
- ),
134
- // allow the user defined sticky options to override the default behavior
135
- ...stickyOptions,
40
+ const config = useTableSectionConfig({
41
+ type: "header",
42
+ lineWrap,
43
+ hoverable,
136
44
  });
45
+ const { dense } = config;
137
46
 
138
47
  return (
139
- <TableConfigProvider value={configuration}>
48
+ <TableConfigProvider value={config}>
140
49
  <thead
141
50
  {...remaining}
142
- ref={exists ? theadRefCallback : targetRef}
51
+ ref={propRef}
143
52
  className={tableHeader({
144
53
  className,
145
54
  dense,
146
55
  sticky,
147
- stickyActive,
148
- stickyActiveClassName,
149
56
  })}
150
57
  >
151
58
  {children}
152
59
  </thead>
153
- {exists && sticky && !disableStickyStyles && (
154
- // rendering a `<tbody>` since it is valid to have 0-many in a table
155
- // https://html.spec.whatwg.org/multipage/tables.html#the-table-element
156
- <tbody aria-hidden ref={targetRef} />
157
- )}
158
60
  </TableConfigProvider>
159
61
  );
160
62
  });
@@ -1,10 +1,8 @@
1
1
  "use client";
2
2
  import { forwardRef, type HTMLAttributes } from "react";
3
- import {
4
- useTableConfig,
5
- type TableRowConfiguration,
6
- } from "./TableConfigurationProvider.js";
3
+ import { useTableConfig } from "./TableConfigurationProvider.js";
7
4
  import { tableRow } from "./tableRowStyles.js";
5
+ import { type TableRowConfiguration } from "./types.js";
8
6
 
9
7
  export interface TableRowProps
10
8
  extends HTMLAttributes<HTMLTableRowElement>,
@@ -3,6 +3,7 @@ import { createRef } from "react";
3
3
  import { act, render, screen } from "../../test-utils/index.js";
4
4
 
5
5
  import { type PropsWithRef } from "../../types.js";
6
+ import { StickyTableSection } from "../StickyTableSection.js";
6
7
  import { Table, type TableProps } from "../Table.js";
7
8
  import { TableBody } from "../TableBody.js";
8
9
  import { TableCell } from "../TableCell.js";
@@ -129,11 +130,11 @@ describe("Table", () => {
129
130
  it("should use an intersection observer to apply a custom className when the table's header is covering content within the table using the full viewport", () => {
130
131
  const { container } = render(
131
132
  <Table>
132
- <TableHeader sticky>
133
+ <StickyTableSection type="header">
133
134
  <TableRow>
134
135
  <TableCell>Header Cell</TableCell>
135
136
  </TableRow>
136
- </TableHeader>
137
+ </StickyTableSection>
137
138
  <TableBody>
138
139
  {Array.from({ length: 20 }, (_, i) => (
139
140
  <TableRow key={i}>
@@ -169,11 +170,11 @@ describe("Table", () => {
169
170
  const { container } = render(
170
171
  <TableContainer>
171
172
  <Table>
172
- <TableHeader sticky>
173
+ <StickyTableSection type="header">
173
174
  <TableRow>
174
175
  <TableCell>Header Cell</TableCell>
175
176
  </TableRow>
176
- </TableHeader>
177
+ </StickyTableSection>
177
178
  <TableBody>
178
179
  {Array.from({ length: 20 }, (_, i) => (
179
180
  <TableRow key={i}>
@@ -218,11 +219,11 @@ describe("Table", () => {
218
219
  </TableRow>
219
220
  ))}
220
221
  </TableBody>
221
- <TableFooter sticky>
222
+ <StickyTableSection type="footer">
222
223
  <TableRow>
223
224
  <TableCell>Footer Cell</TableCell>
224
225
  </TableRow>
225
- </TableFooter>
226
+ </StickyTableSection>
226
227
  </Table>
227
228
  );
228
229
 
@@ -272,11 +273,11 @@ describe("Table", () => {
272
273
  </TableRow>
273
274
  ))}
274
275
  </TableBody>
275
- <TableFooter sticky>
276
+ <StickyTableSection type="footer">
276
277
  <TableRow>
277
278
  <TableCell>Footer Cell</TableCell>
278
279
  </TableRow>
279
- </TableFooter>
280
+ </StickyTableSection>
280
281
  </Table>
281
282
  </TableContainer>
282
283
  );
@@ -3,7 +3,7 @@ import { cssUtils } from "../cssUtils.js";
3
3
  import {
4
4
  type TableCellHorizontalAlignment,
5
5
  type TableCellVerticalAlignment,
6
- } from "./TableConfigurationProvider.js";
6
+ } from "./types.js";
7
7
 
8
8
  /** @since 6.0.0 */
9
9
  export interface TableCellClassNameOptions {
@@ -1,7 +1,95 @@
1
- import type { IntersectionObserverHookOptions } from "../useIntersectionObserver.js";
1
+ import { type IntersectionObserverHookOptions } from "../useIntersectionObserver.js";
2
+
3
+ export type SortOrder = "ascending" | "descending" | "none" | "other";
4
+
5
+ // interfaces that are "public" should be the full word `Configuration` while
6
+ // the private/internal should just be `Config`. "Great" naming convention!
7
+
8
+ export interface TableRowConfiguration {
9
+ /**
10
+ * Set to `true` if rows should no longer change background color while
11
+ * hovered.
12
+ *
13
+ * @defaultValue `false`
14
+ */
15
+ disableHover?: boolean;
16
+
17
+ /**
18
+ * Set to `true` if the rows in the `TableBody` should no longer have borders
19
+ * applied.
20
+ *
21
+ * @defaultValue `false`
22
+ */
23
+ disableBorders?: boolean;
24
+ }
25
+
26
+ /**
27
+ * The horizontal alignment for the content within a cell.
28
+ *
29
+ * Note: Table default behavior is to align to the left.
30
+ */
31
+ export type TableCellHorizontalAlignment = "left" | "center" | "right";
32
+
33
+ /**
34
+ * The vertical alignment for the content within a cell.
35
+ *
36
+ * Note: When this is set to `"top"` or `"bottom"`, `padding-top` or
37
+ * `padding-bottom` will also be applied due to how styling tables work.
38
+ */
39
+ export type TableCellVerticalAlignment = "top" | "middle" | "bottom";
40
+
41
+ export interface TableCellConfiguration {
42
+ hAlign?: TableCellHorizontalAlignment;
43
+ vAlign?: TableCellVerticalAlignment;
44
+
45
+ /**
46
+ * Set this to `true` to allow `TableCell` content to line wrap.
47
+ *
48
+ * @defaultValue `false`
49
+ */
50
+ lineWrap?: boolean;
51
+ }
52
+
53
+ /**
54
+ * @internal
55
+ */
56
+ export interface TableCellConfig extends TableCellConfiguration {
57
+ /**
58
+ * Boolean if all the `TableCell` components should be rendered as a `<th>`
59
+ * instead of a `<td>`. This is really just a convenience prop for the
60
+ * `TableHeader` component so the user of `react-md` doesn't need to keep
61
+ * setting the `type="th"` fot the `TableCell` if using the low-level
62
+ * components.
63
+ *
64
+ * @internal
65
+ */
66
+ header?: boolean;
67
+ }
68
+
69
+ export interface TableConfig extends TableRowConfiguration, TableCellConfig {
70
+ /**
71
+ * Set this to `true` to decrease the height of all cells within the table.
72
+ *
73
+ * @defaultValue `false`
74
+ */
75
+ dense?: boolean;
76
+ }
77
+
78
+ export interface TableConfiguration extends TableConfig {
79
+ /**
80
+ * Set this to `true` to allow the table to span the full width of the
81
+ * container element instead of having the width be determined by the content
82
+ * within the table.
83
+ *
84
+ * @defaultValue `false`
85
+ */
86
+ fullWidth?: boolean;
87
+ }
88
+
89
+ export type TableConfigContext = Required<TableConfig>;
2
90
 
3
91
  /** @since 6.0.0 */
4
- export type TableStickySectionOptions = Pick<
92
+ export type TableStickySectionIntersectionObserverOptions = Pick<
5
93
  IntersectionObserverHookOptions<HTMLTableSectionElement>,
6
94
  "disabled" | "getThreshold" | "getRootMargin"
7
95
  >;
@@ -20,7 +108,7 @@ export type TableStickySectionOptions = Pick<
20
108
  * viewport.
21
109
  * - Note: This really only works with `px` and `rem` units.
22
110
  *
23
- * @see {@link TableStickySectionProps.stickyOptions} for an example usage with custom threshold and
111
+ * @see {@link TableStickySectionConfiguration.stickyOptions} for an example usage with custom threshold and
24
112
  * margin.
25
113
  * @since 6.0.0
26
114
  */
@@ -30,12 +118,7 @@ export type IsStickyTableSectionActive = (
30
118
  ) => boolean;
31
119
 
32
120
  /** @since 6.0.0 */
33
- export interface TableStickySectionProps {
34
- /**
35
- * @defaultValue `false`
36
- */
37
- sticky?: boolean;
38
-
121
+ export interface TableStickySectionConfiguration {
39
122
  /**
40
123
  * This can be used when the {@link sticky} prop is set to `true` for
41
124
  * additional behavior around the "active" state for sticky headers.
@@ -68,7 +151,7 @@ export interface TableStickySectionProps {
68
151
  * @since 6.0.0
69
152
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API}
70
153
  */
71
- stickyOptions?: TableStickySectionOptions;
154
+ stickyOptions?: TableStickySectionIntersectionObserverOptions;
72
155
 
73
156
  /**
74
157
  * An optional className to use when the sticky section is covering other rows
@@ -97,3 +180,15 @@ export interface TableStickySectionProps {
97
180
  */
98
181
  disableStickyStyles?: boolean;
99
182
  }
183
+
184
+ /** @since 6.0.0 */
185
+ export interface TableSectionConfiguration {
186
+ /** @see {@link TableCellConfiguration.lineWrap} */
187
+ lineWrap?: boolean;
188
+
189
+ /**
190
+ * @see {@link TableRowConfiguration.disableHover}
191
+ * @defaultValue `false`
192
+ */
193
+ hoverable?: boolean;
194
+ }
@@ -0,0 +1,126 @@
1
+ "use client";
2
+ import {
3
+ useCallback,
4
+ useState,
5
+ type ReactNode,
6
+ type Ref,
7
+ type RefCallback,
8
+ } from "react";
9
+ import { useEnsuredRef } from "../useEnsuredRef.js";
10
+ import { useIntersectionObserver } from "../useIntersectionObserver.js";
11
+ import { useTableContainer } from "./TableContainerProvider.js";
12
+ import {
13
+ type IsStickyTableSectionActive,
14
+ type TableStickySectionConfiguration,
15
+ } from "./types.js";
16
+
17
+ /**
18
+ * @since 6.0.0
19
+ */
20
+ export const isTableHeaderStickyActive: IsStickyTableSectionActive = (
21
+ entry
22
+ ) => {
23
+ return (
24
+ entry.intersectionRatio < 1 &&
25
+ entry.boundingClientRect.bottom <= window.innerHeight
26
+ );
27
+ };
28
+
29
+ /**
30
+ * @since 6.0.0
31
+ */
32
+ export const isTableFooterStickyActive: IsStickyTableSectionActive = (
33
+ entry,
34
+ isInTableContainer
35
+ ) => {
36
+ const { intersectionRatio, boundingClientRect, isIntersecting } = entry;
37
+ if (isInTableContainer) {
38
+ return !isIntersecting;
39
+ }
40
+
41
+ return intersectionRatio < 1 && boundingClientRect.top >= 0;
42
+ };
43
+
44
+ /** @since 6.0.0 */
45
+ export interface TableStickySectionOptions
46
+ extends TableStickySectionConfiguration {
47
+ ref?: Ref<HTMLTableSectionElement>;
48
+ type: "header" | "footer";
49
+ }
50
+
51
+ /** @since 6.0.0 */
52
+ export interface TableStickySectionImplementation {
53
+ tbody: ReactNode;
54
+ targetRef: RefCallback<HTMLTableSectionElement>;
55
+ sectionRef: RefCallback<HTMLTableSectionElement>;
56
+ stickyActive: boolean;
57
+ }
58
+
59
+ /**
60
+ * @since 6.0.0
61
+ * @internal
62
+ */
63
+ export function useStickyTableSection(
64
+ options: TableStickySectionOptions
65
+ ): TableStickySectionImplementation {
66
+ const { ref, type, disableStickyStyles, stickyOptions } = options;
67
+
68
+ const isHeader = type === "header";
69
+ const isStickyActive =
70
+ options.isStickyActive ??
71
+ (isHeader ? isTableHeaderStickyActive : isTableFooterStickyActive);
72
+
73
+ const [sectionRef, sectionRefCallback] = useEnsuredRef(ref);
74
+ const { exists, containerRef } = useTableContainer();
75
+ const [stickyActive, setStickyActive] = useState(false);
76
+ const targetRef = useIntersectionObserver({
77
+ ref: exists ? undefined : sectionRefCallback,
78
+ root: containerRef,
79
+ disabled: disableStickyStyles,
80
+ threshold: exists ? 0 : 1,
81
+ getRootMargin: useCallback(() => {
82
+ const section = sectionRef.current;
83
+ if (!isHeader) {
84
+ const topOffset = exists && section ? section.offsetHeight - 1 : 1;
85
+
86
+ return `0px 0px -${topOffset}px 0px`;
87
+ }
88
+
89
+ if (!section) {
90
+ return;
91
+ }
92
+
93
+ let topOffset: number;
94
+ if (exists) {
95
+ topOffset = section.offsetHeight - 1;
96
+ } else {
97
+ const top = parseFloat(window.getComputedStyle(section).top);
98
+ topOffset = Number.isNaN(top) ? 1 : top + 1;
99
+ }
100
+
101
+ return `-${topOffset}px 0px 0px`;
102
+ }, [exists, isHeader, sectionRef]),
103
+ onUpdate: useCallback(
104
+ ([entry]) => {
105
+ setStickyActive(isStickyActive(entry, exists));
106
+ },
107
+ [exists, isStickyActive]
108
+ ),
109
+ // allow the user defined sticky options to override the default behavior
110
+ ...stickyOptions,
111
+ });
112
+
113
+ let tbody: ReactNode;
114
+ if (exists && !disableStickyStyles) {
115
+ // rendering a `<tbody>` since it is valid to have 0-many in a table
116
+ // https://html.spec.whatwg.org/multipage/tables.html#the-table-element
117
+ tbody = <tbody aria-hidden ref={targetRef} />;
118
+ }
119
+
120
+ return {
121
+ tbody,
122
+ targetRef,
123
+ sectionRef: exists ? sectionRefCallback : targetRef,
124
+ stickyActive,
125
+ };
126
+ }
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { useTableConfig } from "./TableConfigurationProvider.js";
4
+ import {
5
+ type TableConfigContext,
6
+ type TableSectionConfiguration,
7
+ } from "./types.js";
8
+
9
+ /**
10
+ * @since 6.0.0
11
+ * @internal
12
+ */
13
+ export interface TableSectionConfigOptions extends TableSectionConfiguration {
14
+ type: "header" | "footer";
15
+ }
16
+
17
+ /**
18
+ * @since 6.0.0
19
+ * @internal
20
+ */
21
+ export function useTableSectionConfig(
22
+ options: TableSectionConfigOptions
23
+ ): Readonly<TableConfigContext> {
24
+ const { type, lineWrap: propLineWrap, hoverable } = options;
25
+
26
+ // update the table configuration with the custom overrides for the `<thead>/<tfoot>`
27
+ const { dense, hAlign, vAlign, lineWrap, disableHover, disableBorders } =
28
+ useTableConfig({
29
+ lineWrap: propLineWrap,
30
+ disableHover: !hoverable,
31
+ });
32
+
33
+ return useMemo<TableConfigContext>(
34
+ () => ({
35
+ dense,
36
+ header: type === "header",
37
+ hAlign,
38
+ vAlign,
39
+ lineWrap,
40
+ disableBorders,
41
+ disableHover,
42
+ }),
43
+ [dense, type, hAlign, vAlign, lineWrap, disableBorders, disableHover]
44
+ );
45
+ }
@@ -410,7 +410,8 @@ $theme-variables: (
410
410
  @if not $disable-dark-elevation {
411
411
  @if $color-scheme == dark {
412
412
  @include use-dark-theme-elevation-colors;
413
- } @else if $color-scheme == light {
413
+ } @else {
414
+ // default to light theme for system themes as well
414
415
  @include use-light-theme-elevation-colors;
415
416
  }
416
417
  }
@@ -4,8 +4,11 @@ import { type TextOverflow } from "../cssUtils.js";
4
4
  import { Portal } from "../portal/Portal.js";
5
5
  import { type SimplePosition } from "../positioning/types.js";
6
6
  import {
7
+ type CSSTransitionClassNames,
7
8
  type CSSTransitionComponentProps,
9
+ type SSRTransitionOptions,
8
10
  type TransitionActions,
11
+ type TransitionTimeout,
9
12
  } from "../transition/types.js";
10
13
  import { useCSSTransition } from "../transition/useCSSTransition.js";
11
14
  import { useEnsuredId } from "../useEnsuredId.js";
@@ -21,22 +24,28 @@ import { tooltip } from "./tooltipStyles.js";
21
24
  * creating custom tooltip implementations.
22
25
  *
23
26
  * @since 2.8.0 Supports the `RenderConditionalPortalProps`
24
- * @since 6.0.0 No longer supports the `RenderConditionalPortalProps`.
27
+ * @since 6.0.0 The `id` prop is optional.
28
+ * @since 6.0.0 Removed `lineWrap` for `textOverflow`
29
+ * @since 6.0.0 No longer supports the `RenderConditionalPortalProps` other than
30
+ * `portal` with the `disablePortal` prop.
25
31
  */
26
32
  export interface TooltipProps
27
33
  extends HTMLAttributes<HTMLSpanElement>,
28
34
  CSSTransitionComponentProps,
35
+ SSRTransitionOptions,
29
36
  TransitionActions {
30
37
  visible: boolean;
31
38
 
32
39
  /**
40
+ * Set this to `true` to use a smaller font size and padding on the tooltip
41
+ * and a smaller gap between the tooltip and tooltipped element.
42
+ *
33
43
  * @defaultValue `false`
34
44
  */
35
45
  dense?: boolean;
36
46
 
37
47
  /**
38
- * @defaultValue `DEFAULT_TOOLTIP_POSITION`
39
- * @see {@link DEFAULT_TOOLTIP_POSITION}
48
+ * @defaultValue `"below"`
40
49
  */
41
50
  position?: SimplePosition;
42
51
 
@@ -46,11 +55,6 @@ export interface TooltipProps
46
55
  */
47
56
  temporary?: boolean;
48
57
 
49
- /**
50
- * @defaultValue `false`
51
- */
52
- disablePortal?: boolean;
53
-
54
58
  /**
55
59
  * Set this to `"nowrap"` for tooltips that are positioned near the edge of
56
60
  * the viewport that have a position of `"above"` or `"below"` so that the
@@ -62,6 +66,18 @@ export interface TooltipProps
62
66
  * @defaultValue `"allow"`
63
67
  */
64
68
  textOverflow?: TextOverflow;
69
+
70
+ /**
71
+ * @see {@link CSSTransitionComponentProps.timeout}
72
+ * @defaultValue `DEFAULT_TOOLTIP_TIMEOUT`
73
+ */
74
+ timeout?: TransitionTimeout;
75
+
76
+ /**
77
+ * @see {@link CSSTransitionComponentProps.classNames}
78
+ * @defaultValue `DEFAULT_TOOLTIP_CLASSNAMES`
79
+ */
80
+ classNames?: CSSTransitionClassNames;
65
81
  }
66
82
 
67
83
  /**