@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.
- package/.eslintrc.cjs +8 -0
- package/.turbo/turbo-build.log +22 -22
- package/.turbo/turbo-lint.log +3 -3
- package/.turbo/turbo-test.log +4000 -3982
- package/.turbo/turbo-typecheck.log +1 -23
- package/CHANGELOG.md +13 -0
- package/coverage/clover.xml +477 -410
- package/coverage/coverage-final.json +5 -4
- package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +81 -15
- package/coverage/lcov-report/autocomplete/AutocompleteClearButton.tsx.html +262 -0
- package/coverage/lcov-report/autocomplete/FilterAutocompleteOptions.tsx.html +364 -0
- package/coverage/lcov-report/autocomplete/index.html +48 -18
- package/coverage/lcov-report/card/Card.tsx.html +349 -0
- package/coverage/lcov-report/card/CardSubtitle.tsx.html +265 -0
- package/coverage/lcov-report/card/index.html +146 -0
- package/coverage/lcov-report/card/styles.ts.html +682 -0
- package/coverage/lcov-report/form/Option.tsx.html +727 -0
- package/coverage/lcov-report/form/index.html +131 -0
- package/coverage/lcov-report/form/useListboxProvider.ts.html +253 -0
- package/coverage/lcov-report/index.html +22 -37
- package/coverage/lcov-report/src/card/Card.tsx.html +349 -0
- package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +277 -0
- package/coverage/lcov-report/src/card/index.html +146 -0
- package/coverage/lcov-report/src/card/styles.ts.html +682 -0
- package/coverage/lcov-report/src/cssUtils.ts.html +787 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/transition/index.html +116 -0
- package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +766 -0
- package/coverage/lcov-report/transition/index.html +116 -0
- package/coverage/lcov-report/transition/useCSSTransition.ts.html +766 -0
- package/coverage/lcov.info +572 -456
- package/dist/CoreProviders.js.map +1 -1
- package/dist/NoSsr.js.map +1 -1
- package/dist/RootHtml.js.map +1 -1
- package/dist/SsrProvider.js.map +1 -1
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.d.ts +8 -4
- package/dist/app-bar/AppBarTitle.js +3 -2
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/autocomplete/Autocomplete.js.map +1 -1
- package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
- package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
- package/dist/autocomplete/FilterAutocompleteOptions.js.map +1 -1
- package/dist/autocomplete/autocompleteStyles.js.map +1 -1
- package/dist/autocomplete/defaults.d.ts +2 -2
- package/dist/autocomplete/defaults.js +3 -3
- package/dist/autocomplete/defaults.js.map +1 -1
- package/dist/autocomplete/types.js.map +1 -1
- package/dist/avatar/Avatar.d.ts +1 -2
- package/dist/avatar/Avatar.js +1 -2
- package/dist/avatar/Avatar.js.map +1 -1
- package/dist/avatar/styles.js.map +1 -1
- package/dist/badge/Badge.js.map +1 -1
- package/dist/box/Box.js.map +1 -1
- package/dist/box/styles.js.map +1 -1
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/ButtonUnstyled.js.map +1 -1
- package/dist/button/FloatingActionButton.js.map +1 -1
- package/dist/button/TooltippedButton.js.map +1 -1
- package/dist/button/buttonStyles.js.map +1 -1
- package/dist/button/buttonUnstyledStyles.js.map +1 -1
- package/dist/card/Card.d.ts +2 -1
- package/dist/card/Card.js.map +1 -1
- package/dist/card/CardContent.js.map +1 -1
- package/dist/card/CardFooter.js.map +1 -1
- package/dist/card/CardHeader.js.map +1 -1
- package/dist/card/CardSubtitle.d.ts +6 -0
- package/dist/card/CardSubtitle.js +2 -1
- package/dist/card/CardSubtitle.js.map +1 -1
- package/dist/card/CardTitle.js.map +1 -1
- package/dist/card/ClickableCard.js.map +1 -1
- package/dist/card/styles.js +2 -4
- package/dist/card/styles.js.map +1 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/styles.js.map +1 -1
- package/dist/cssUtils.d.ts +1 -1
- package/dist/cssUtils.js.map +1 -1
- package/dist/delegateEvent.js.map +1 -1
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/DialogContainer.js.map +1 -1
- package/dist/dialog/DialogContent.js.map +1 -1
- package/dist/dialog/DialogFooter.js.map +1 -1
- package/dist/dialog/DialogHeader.js.map +1 -1
- package/dist/dialog/DialogTitle.js.map +1 -1
- package/dist/dialog/FixedDialog.js.map +1 -1
- package/dist/dialog/NestedDialogProvider.js.map +1 -1
- package/dist/dialog/styles.js.map +1 -1
- package/dist/divider/Divider.js.map +1 -1
- package/dist/divider/styles.js.map +1 -1
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionList.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
- package/dist/expansion-panel/useExpansionList.js.map +1 -1
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/focus/utils.js.map +1 -1
- package/dist/form/Checkbox.js.map +1 -1
- package/dist/form/Fieldset.js.map +1 -1
- package/dist/form/FileInput.js.map +1 -1
- package/dist/form/Form.js.map +1 -1
- package/dist/form/FormMessage.js.map +1 -1
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/FormMessageCounter.js.map +1 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/InputToggleIcon.js.map +1 -1
- package/dist/form/Label.js.map +1 -1
- package/dist/form/Legend.js.map +1 -1
- package/dist/form/MenuItemCheckbox.js.map +1 -1
- package/dist/form/MenuItemFileInput.js.map +1 -1
- package/dist/form/MenuItemInputToggle.js.map +1 -1
- package/dist/form/MenuItemRadio.js.map +1 -1
- package/dist/form/MenuItemSwitch.js.map +1 -1
- package/dist/form/MenuItemTextField.js.map +1 -1
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/OptGroup.js.map +1 -1
- package/dist/form/Option.js.map +1 -1
- package/dist/form/Password.js.map +1 -1
- package/dist/form/Radio.js.map +1 -1
- package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
- package/dist/form/Select.js.map +1 -1
- package/dist/form/SelectedOption.js.map +1 -1
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderContainer.js.map +1 -1
- package/dist/form/SliderMark.js.map +1 -1
- package/dist/form/SliderMarkLabel.js.map +1 -1
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderTrack.js.map +1 -1
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/SliderValueTooltip.js.map +1 -1
- package/dist/form/Switch.js.map +1 -1
- package/dist/form/SwitchTrack.js.map +1 -1
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldAddon.js.map +1 -1
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/fileUtils.js.map +1 -1
- package/dist/form/formConfig.js.map +1 -1
- package/dist/form/formMessageStyles.js.map +1 -1
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/menuItemInputToggleStyles.js.map +1 -1
- package/dist/form/nativeSelectStyles.js.map +1 -1
- package/dist/form/optionStyles.js.map +1 -1
- package/dist/form/passwordStyles.js.map +1 -1
- package/dist/form/selectStyles.js.map +1 -1
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/sliderUtils.js.map +1 -1
- package/dist/form/switchStyles.js.map +1 -1
- package/dist/form/textAreaStyles.js.map +1 -1
- package/dist/form/textFieldContainerStyles.js.map +1 -1
- package/dist/form/textFieldStyles.js.map +1 -1
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCheckboxGroup.js.map +1 -1
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useEditableCombobox.js.map +1 -1
- package/dist/form/useFileUpload.js.map +1 -1
- package/dist/form/useFormReset.js.map +1 -1
- package/dist/form/useListboxProvider.js.map +1 -1
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useRadioGroup.js.map +1 -1
- package/dist/form/useRangeSlider.js.map +1 -1
- package/dist/form/useResizingTextArea.js.map +1 -1
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/useSlider.js.map +1 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/form/useTextFieldContainerAddons.js.map +1 -1
- package/dist/form/utils.js.map +1 -1
- package/dist/form/validation.js.map +1 -1
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
- package/dist/icon/FontIcon.d.ts +10 -6
- package/dist/icon/FontIcon.js +1 -5
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/IconRotator.js.map +1 -1
- package/dist/icon/MaterialIcon.d.ts +19 -2
- package/dist/icon/MaterialIcon.js +14 -2
- package/dist/icon/MaterialIcon.js.map +1 -1
- package/dist/icon/MaterialSymbol.js.map +1 -1
- package/dist/icon/SVGIcon.d.ts +3 -0
- package/dist/icon/SVGIcon.js.map +1 -1
- package/dist/icon/TextIconSpacing.js.map +1 -1
- package/dist/icon/iconConfig.d.ts +1 -0
- package/dist/icon/iconConfig.js +1 -0
- package/dist/icon/iconConfig.js.map +1 -1
- package/dist/icon/material.d.ts +1 -1
- package/dist/icon/material.js.map +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/icon/styles.js.map +1 -1
- package/dist/interaction/Ripple.js.map +1 -1
- package/dist/interaction/RippleContainer.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/config.js.map +1 -1
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/useElementInteraction.js.map +1 -1
- package/dist/interaction/useHigherContrastChildren.js.map +1 -1
- package/dist/interaction/utils.js.map +1 -1
- package/dist/layout/LayoutAppBar.js.map +1 -1
- package/dist/layout/LayoutNav.js.map +1 -1
- package/dist/layout/LayoutWindowSplitter.js.map +1 -1
- package/dist/layout/Main.js.map +1 -1
- package/dist/layout/layoutNavStyles.js.map +1 -1
- package/dist/layout/layoutWindowSplitterStyles.js.map +1 -1
- package/dist/layout/mainStyles.js.map +1 -1
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
- package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
- package/dist/layout/useLayoutTree.js.map +1 -1
- package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
- package/dist/layout/useMainTabIndex.js.map +1 -1
- package/dist/layout/useResizableLayout.js.map +1 -1
- package/dist/layout/useTemporaryLayout.js.map +1 -1
- package/dist/link/Link.d.ts +2 -4
- package/dist/link/Link.js +1 -2
- package/dist/link/Link.js.map +1 -1
- package/dist/link/SkipToMainContent.d.ts +10 -3
- package/dist/link/SkipToMainContent.js +4 -1
- package/dist/link/SkipToMainContent.js.map +1 -1
- package/dist/link/styles.d.ts +2 -2
- package/dist/link/styles.js.map +1 -1
- package/dist/list/List.js.map +1 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/ListItemAddon.js.map +1 -1
- package/dist/list/ListItemChildren.js.map +1 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/list/ListItemText.js.map +1 -1
- package/dist/list/ListSubheader.js.map +1 -1
- package/dist/list/getListItemHeight.js.map +1 -1
- package/dist/list/listItemStyles.js.map +1 -1
- package/dist/list/types.js.map +1 -1
- package/dist/media-queries/AppSizeProvider.js.map +1 -1
- package/dist/media-queries/appSize.js.map +1 -1
- package/dist/media-queries/useMediaQuery.js.map +1 -1
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuBar.js.map +1 -1
- package/dist/menu/MenuButton.js.map +1 -1
- package/dist/menu/MenuConfigurationProvider.js.map +1 -1
- package/dist/menu/MenuItem.js.map +1 -1
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/MenuItemCircularProgress.js.map +1 -1
- package/dist/menu/MenuItemGroup.js.map +1 -1
- package/dist/menu/MenuItemSeparator.js.map +1 -1
- package/dist/menu/MenuSheet.js.map +1 -1
- package/dist/menu/MenuVisibilityProvider.js.map +1 -1
- package/dist/menu/MenuWidget.js.map +1 -1
- package/dist/menu/MenuWidgetKeyboardProvider.js.map +1 -1
- package/dist/menu/useContextMenu.js.map +1 -1
- package/dist/menu/useMenuBarProvider.js.map +1 -1
- package/dist/menu/utils.js.map +1 -1
- package/dist/movement/constants.js.map +1 -1
- package/dist/movement/findMatchIndex.js.map +1 -1
- package/dist/movement/types.js.map +1 -1
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
- package/dist/movement/utils.js.map +1 -1
- package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
- package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
- package/dist/navigation/NavGroup.js.map +1 -1
- package/dist/navigation/NavItem.js.map +1 -1
- package/dist/navigation/NavItemButton.js.map +1 -1
- package/dist/navigation/NavItemLink.js.map +1 -1
- package/dist/navigation/NavSubheader.js.map +1 -1
- package/dist/navigation/Navigation.js.map +1 -1
- package/dist/navigation/getHrefFromParents.js.map +1 -1
- package/dist/navigation/navGroupStyles.js.map +1 -1
- package/dist/navigation/navItemStyles.js.map +1 -1
- package/dist/navigation/types.js.map +1 -1
- package/dist/navigation/useActiveHeadingId.js.map +1 -1
- package/dist/overlay/Overlay.d.ts +1 -0
- package/dist/overlay/Overlay.js.map +1 -1
- package/dist/overlay/overlayStyles.js.map +1 -1
- package/dist/portal/Portal.d.ts +4 -0
- package/dist/portal/Portal.js.map +1 -1
- package/dist/portal/PortalContainerProvider.d.ts +8 -3
- package/dist/portal/PortalContainerProvider.js +1 -0
- package/dist/portal/PortalContainerProvider.js.map +1 -1
- package/dist/positioning/constants.js.map +1 -1
- package/dist/positioning/createHorizontalPosition.js.map +1 -1
- package/dist/positioning/createVerticalPosition.js.map +1 -1
- package/dist/positioning/getFixedPosition.js.map +1 -1
- package/dist/positioning/types.js.map +1 -1
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/positioning/utils.js.map +1 -1
- package/dist/progress/CircularProgress.d.ts +5 -4
- package/dist/progress/CircularProgress.js.map +1 -1
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/getProgressA11y.js.map +1 -1
- package/dist/progress/types.js.map +1 -1
- package/dist/responsive-item/ResponsiveItemContainer.js.map +1 -1
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
- package/dist/responsive-item/styles.js.map +1 -1
- package/dist/scroll/ScrollLock.js.map +1 -1
- package/dist/scroll/getScrollbarWidth.js.map +1 -1
- package/dist/scroll/useScrollLock.js.map +1 -1
- package/dist/searching/caseInsensitive.js.map +1 -1
- package/dist/searching/fuzzy.js.map +1 -1
- package/dist/searching/toSearchQuery.js.map +1 -1
- package/dist/searching/types.js.map +1 -1
- package/dist/searching/useFuzzyMatch.js.map +1 -1
- package/dist/searching/utils.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
- package/dist/segmented-button/segmentedButtonContainerStyles.js.map +1 -1
- package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
- package/dist/sheet/Sheet.js.map +1 -1
- package/dist/sheet/styles.js.map +1 -1
- package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
- package/dist/snackbar/Snackbar.js.map +1 -1
- package/dist/snackbar/Toast.js.map +1 -1
- package/dist/snackbar/ToastActionButton.js.map +1 -1
- package/dist/snackbar/ToastCloseButton.js.map +1 -1
- package/dist/snackbar/ToastContent.js.map +1 -1
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/snackbar/ToastManagerProvider.js.map +1 -1
- package/dist/snackbar/snackbarStyles.js.map +1 -1
- package/dist/snackbar/toastContentStyles.js.map +1 -1
- package/dist/snackbar/toastStyles.js.map +1 -1
- package/dist/snackbar/useCurrentToastActions.js.map +1 -1
- package/dist/suspense/CircularProgressSuspense.js.map +1 -1
- package/dist/suspense/NullSuspense.js.map +1 -1
- package/dist/table/StickyTableSection.d.ts +23 -0
- package/dist/table/StickyTableSection.js +56 -0
- package/dist/table/StickyTableSection.js.map +1 -0
- package/dist/table/Table.d.ts +1 -1
- package/dist/table/Table.js.map +1 -1
- package/dist/table/TableBody.d.ts +1 -1
- package/dist/table/TableBody.js.map +1 -1
- package/dist/table/TableCell.d.ts +3 -2
- package/dist/table/TableCell.js.map +1 -1
- package/dist/table/TableCellContent.d.ts +1 -2
- package/dist/table/TableCellContent.js.map +1 -1
- package/dist/table/TableCheckbox.js.map +1 -1
- package/dist/table/TableConfigurationProvider.d.ts +1 -73
- package/dist/table/TableConfigurationProvider.js.map +1 -1
- package/dist/table/TableContainer.js.map +1 -1
- package/dist/table/TableContainerProvider.js.map +1 -1
- package/dist/table/TableFooter.d.ts +8 -17
- package/dist/table/TableFooter.js +17 -80
- package/dist/table/TableFooter.js.map +1 -1
- package/dist/table/TableHeader.d.ts +8 -17
- package/dist/table/TableHeader.js +20 -87
- package/dist/table/TableHeader.js.map +1 -1
- package/dist/table/TableRadio.js.map +1 -1
- package/dist/table/TableRow.d.ts +1 -1
- package/dist/table/TableRow.js.map +1 -1
- package/dist/table/tableCellStyles.d.ts +1 -1
- package/dist/table/tableCellStyles.js.map +1 -1
- package/dist/table/tableContainerStyles.js.map +1 -1
- package/dist/table/tableFooterStyles.js.map +1 -1
- package/dist/table/tableHeaderStyles.js.map +1 -1
- package/dist/table/tableRowStyles.js.map +1 -1
- package/dist/table/tableStyles.js.map +1 -1
- package/dist/table/types.d.ts +89 -9
- package/dist/table/types.js.map +1 -1
- package/dist/table/useStickyTableSection.d.ts +27 -0
- package/dist/table/useStickyTableSection.js +84 -0
- package/dist/table/useStickyTableSection.js.map +1 -0
- package/dist/table/useTableSectionConfig.d.ts +13 -0
- package/dist/table/useTableSectionConfig.js +33 -0
- package/dist/table/useTableSectionConfig.js.map +1 -0
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/TabListScrollButton.js.map +1 -1
- package/dist/tabs/tabIndicatorStyles.js.map +1 -1
- package/dist/tabs/tabListScrollButtonStyles.js.map +1 -1
- package/dist/tabs/tabListStyles.js.map +1 -1
- package/dist/tabs/tabStyles.js.map +1 -1
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/tabs/useTabs.js.map +1 -1
- package/dist/tabs/utils.js.map +1 -1
- package/dist/test-utils/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/ResizeObserver.js.map +1 -1
- package/dist/test-utils/data-testid.js.map +1 -1
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/jest-setup.js.map +1 -1
- package/dist/test-utils/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -1
- package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
- package/dist/test-utils/polyfills/TextEncoder.js.map +1 -1
- package/dist/test-utils/polyfills/index.js.map +1 -1
- package/dist/test-utils/polyfills/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/offsetParent.js.map +1 -1
- package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -1
- package/dist/test-utils/render.js.map +1 -1
- package/dist/test-utils/timers.js.map +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/_theme.scss +2 -1
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/cssVars.js.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/useCSSVariables.js.map +1 -1
- package/dist/theme/useColorScheme.js.map +1 -1
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
- package/dist/theme/useColorSchemeProvider.js.map +1 -1
- package/dist/theme/usePrefersColorScheme.js.map +1 -1
- package/dist/theme/utils.js.map +1 -1
- package/dist/tooltip/Tooltip.d.ts +20 -9
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
- package/dist/tooltip/constants.js.map +1 -1
- package/dist/tooltip/tooltipStyles.js.map +1 -1
- package/dist/tooltip/useTooltip.d.ts +30 -16
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/tooltip/useTooltipPosition.d.ts +2 -4
- package/dist/tooltip/useTooltipPosition.js.map +1 -1
- package/dist/tooltip/utils.js.map +1 -1
- package/dist/transition/CSSTransition.js.map +1 -1
- package/dist/transition/Collapse.js.map +1 -1
- package/dist/transition/CrossFade.js.map +1 -1
- package/dist/transition/ScaleTransition.js.map +1 -1
- package/dist/transition/SkeletonPlaceholder.js.map +1 -1
- package/dist/transition/Slide.js.map +1 -1
- package/dist/transition/SlideContainer.js.map +1 -1
- package/dist/transition/collapseStyles.js.map +1 -1
- package/dist/transition/config.js.map +1 -1
- package/dist/transition/maxWidthTransition.js.map +1 -1
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
- package/dist/transition/types.d.ts +19 -24
- package/dist/transition/types.js.map +1 -1
- package/dist/transition/useCSSTransition.js.map +1 -1
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- package/dist/transition/useCrossFadeTransition.js.map +1 -1
- package/dist/transition/useMaxWidthTransition.js.map +1 -1
- package/dist/transition/useScaleTransition.js.map +1 -1
- package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
- package/dist/transition/useSlideTransition.js.map +1 -1
- package/dist/transition/useTransition.d.ts +1 -0
- package/dist/transition/useTransition.js +1 -0
- package/dist/transition/useTransition.js.map +1 -1
- package/dist/transition/utils.js.map +1 -1
- package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
- package/dist/tree/Tree.js.map +1 -1
- package/dist/tree/TreeGroup.js.map +1 -1
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeItemExpander.js.map +1 -1
- package/dist/tree/TreeProvider.js.map +1 -1
- package/dist/tree/styles.js.map +1 -1
- package/dist/tree/types.js.map +1 -1
- package/dist/tree/useTree.d.ts +3 -3
- package/dist/tree/useTree.js.map +1 -1
- package/dist/tree/useTreeExpansion.js.map +1 -1
- package/dist/tree/useTreeItems.js.map +1 -1
- package/dist/tree/useTreeMovement.js.map +1 -1
- package/dist/tree/useTreeSelection.js.map +1 -1
- package/dist/tree/utils.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/typography/SrOnly.js.map +1 -1
- package/dist/typography/TextContainer.d.ts +4 -0
- package/dist/typography/TextContainer.js +2 -0
- package/dist/typography/TextContainer.js.map +1 -1
- package/dist/typography/Typography.d.ts +10 -0
- package/dist/typography/Typography.js +3 -0
- package/dist/typography/Typography.js.map +1 -1
- package/dist/typography/WritingDirectionProvider.js.map +1 -1
- package/dist/typography/textContainerStyles.js.map +1 -1
- package/dist/typography/typographyStyles.js.map +1 -1
- package/dist/useAsyncFunction.js.map +1 -1
- package/dist/useDebouncedFunction.js.map +1 -1
- package/dist/useDropzone.js.map +1 -1
- package/dist/useElementSize.js.map +1 -1
- package/dist/useEnsuredId.js.map +1 -1
- package/dist/useEnsuredRef.js.map +1 -1
- package/dist/useEnsuredState.js.map +1 -1
- package/dist/useHtmlClassName.js.map +1 -1
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/useLocalStorage.js.map +1 -1
- package/dist/useMutationObserver.js.map +1 -1
- package/dist/useOrientation.js.map +1 -1
- package/dist/usePageInactive.js.map +1 -1
- package/dist/useResizeListener.js.map +1 -1
- package/dist/useResizeObserver.js.map +1 -1
- package/dist/useThrottledFunction.js.map +1 -1
- package/dist/useToggle.js.map +1 -1
- package/dist/useUnmounted.js.map +1 -1
- package/dist/useWindowSize.js.map +1 -1
- package/dist/utils/RenderRecursively.js.map +1 -1
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/applyRef.js.map +1 -1
- package/dist/utils/bem.js.map +1 -1
- package/dist/utils/getClientPosition.js.map +1 -1
- package/dist/utils/getMiddleOfRange.js.map +1 -1
- package/dist/utils/getPercentage.js.map +1 -1
- package/dist/utils/getRangeDefaultValue.js.map +1 -1
- package/dist/utils/getRangeSteps.js.map +1 -1
- package/dist/utils/identity.js.map +1 -1
- package/dist/utils/isElementVisible.js.map +1 -1
- package/dist/utils/loop.js.map +1 -1
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/parseCssLengthUnit.js.map +1 -1
- package/dist/utils/randomInt.js.map +1 -1
- package/dist/utils/wait.js.map +1 -1
- package/dist/utils/withinRange.js.map +1 -1
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/useWindowSplitter.js.map +1 -1
- package/package.json +21 -20
- package/scripts/getExportMap.ts +66 -0
- package/scripts/tsconfig.json +1 -1
- package/src/app-bar/AppBarTitle.tsx +8 -4
- package/src/autocomplete/defaults.ts +3 -3
- package/src/avatar/Avatar.tsx +1 -2
- package/src/card/Card.tsx +2 -1
- package/src/card/CardSubtitle.tsx +9 -0
- package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
- package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
- package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
- package/src/card/styles.ts +2 -6
- package/src/cssUtils.ts +1 -1
- package/src/icon/FontIcon.tsx +19 -9
- package/src/icon/MaterialIcon.tsx +23 -4
- package/src/icon/SVGIcon.tsx +3 -0
- package/src/icon/iconConfig.tsx +1 -0
- package/src/icon/material.ts +276 -19
- package/src/link/Link.tsx +2 -4
- package/src/link/SkipToMainContent.tsx +11 -4
- package/src/link/styles.ts +2 -2
- package/src/overlay/Overlay.tsx +1 -0
- package/src/portal/Portal.tsx +5 -0
- package/src/portal/PortalContainerProvider.tsx +16 -7
- package/src/progress/CircularProgress.tsx +5 -4
- package/src/table/StickyTableSection.tsx +91 -0
- package/src/table/Table.tsx +2 -5
- package/src/table/TableBody.tsx +1 -2
- package/src/table/TableCell.tsx +3 -5
- package/src/table/TableCellContent.tsx +1 -3
- package/src/table/TableConfigurationProvider.tsx +1 -86
- package/src/table/TableFooter.tsx +19 -116
- package/src/table/TableHeader.tsx +20 -118
- package/src/table/TableRow.tsx +2 -4
- package/src/table/__tests__/Table.tsx +9 -8
- package/src/table/tableCellStyles.ts +1 -1
- package/src/table/types.ts +105 -10
- package/src/table/useStickyTableSection.tsx +126 -0
- package/src/table/useTableSectionConfig.ts +45 -0
- package/src/theme/_theme.scss +2 -1
- package/src/tooltip/Tooltip.tsx +24 -8
- package/src/tooltip/useTooltip.ts +52 -27
- package/src/tooltip/useTooltipPosition.ts +2 -4
- package/src/transition/types.ts +23 -27
- package/src/transition/useTransition.ts +1 -0
- package/src/tree/useTree.ts +3 -5
- package/src/typography/TextContainer.tsx +4 -0
- package/src/typography/Typography.tsx +10 -0
- package/src/useResizeListener.ts +1 -1
|
@@ -1,61 +1,27 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
TableStickySectionProps {
|
|
10
|
+
TableSectionConfiguration {
|
|
43
11
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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={
|
|
48
|
+
<TableConfigProvider value={config}>
|
|
140
49
|
<thead
|
|
141
50
|
{...remaining}
|
|
142
|
-
ref={
|
|
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
|
});
|
package/src/table/TableRow.tsx
CHANGED
|
@@ -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
|
-
<
|
|
133
|
+
<StickyTableSection type="header">
|
|
133
134
|
<TableRow>
|
|
134
135
|
<TableCell>Header Cell</TableCell>
|
|
135
136
|
</TableRow>
|
|
136
|
-
</
|
|
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
|
-
<
|
|
173
|
+
<StickyTableSection type="header">
|
|
173
174
|
<TableRow>
|
|
174
175
|
<TableCell>Header Cell</TableCell>
|
|
175
176
|
</TableRow>
|
|
176
|
-
</
|
|
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
|
-
<
|
|
222
|
+
<StickyTableSection type="footer">
|
|
222
223
|
<TableRow>
|
|
223
224
|
<TableCell>Footer Cell</TableCell>
|
|
224
225
|
</TableRow>
|
|
225
|
-
</
|
|
226
|
+
</StickyTableSection>
|
|
226
227
|
</Table>
|
|
227
228
|
);
|
|
228
229
|
|
|
@@ -272,11 +273,11 @@ describe("Table", () => {
|
|
|
272
273
|
</TableRow>
|
|
273
274
|
))}
|
|
274
275
|
</TableBody>
|
|
275
|
-
<
|
|
276
|
+
<StickyTableSection type="footer">
|
|
276
277
|
<TableRow>
|
|
277
278
|
<TableCell>Footer Cell</TableCell>
|
|
278
279
|
</TableRow>
|
|
279
|
-
</
|
|
280
|
+
</StickyTableSection>
|
|
280
281
|
</Table>
|
|
281
282
|
</TableContainer>
|
|
282
283
|
);
|
package/src/table/types.ts
CHANGED
|
@@ -1,7 +1,95 @@
|
|
|
1
|
-
import type
|
|
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
|
|
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
|
|
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
|
|
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?:
|
|
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
|
+
}
|
package/src/theme/_theme.scss
CHANGED
|
@@ -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
|
|
413
|
+
} @else {
|
|
414
|
+
// default to light theme for system themes as well
|
|
414
415
|
@include use-light-theme-elevation-colors;
|
|
415
416
|
}
|
|
416
417
|
}
|
package/src/tooltip/Tooltip.tsx
CHANGED
|
@@ -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
|
|
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 `
|
|
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
|
/**
|