@react-md/core 1.0.0-next.16 → 1.0.0-next.18
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/dist/_box-shadows.scss +76 -0
- package/dist/_colors.scss +279 -277
- package/dist/_core.scss +107 -16
- package/dist/_object-fit.scss +86 -0
- package/dist/_utils.scss +246 -72
- package/dist/app-bar/AppBar.d.ts +1 -90
- package/dist/app-bar/AppBar.js +1 -40
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.d.ts +1 -27
- package/dist/app-bar/AppBarTitle.js +1 -15
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/app-bar/_app-bar.scss +156 -25
- package/dist/app-bar/styles.d.ts +117 -0
- package/dist/app-bar/styles.js +55 -0
- package/dist/app-bar/styles.js.map +1 -0
- package/dist/autocomplete/Autocomplete.d.ts +8 -79
- package/dist/autocomplete/Autocomplete.js +112 -83
- package/dist/autocomplete/Autocomplete.js.map +1 -1
- package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
- package/dist/autocomplete/AutocompleteChip.js +34 -0
- package/dist/autocomplete/AutocompleteChip.js.map +1 -0
- package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
- package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
- package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
- package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
- package/dist/autocomplete/AutocompleteClearButton.js +29 -0
- package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
- package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
- package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
- package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
- package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
- package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
- package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
- package/dist/autocomplete/_autocomplete.scss +362 -34
- package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
- package/dist/autocomplete/autocompleteStyles.js +17 -8
- package/dist/autocomplete/autocompleteStyles.js.map +1 -1
- package/dist/autocomplete/defaults.d.ts +9 -9
- package/dist/autocomplete/defaults.js +13 -13
- package/dist/autocomplete/defaults.js.map +1 -1
- package/dist/autocomplete/types.d.ts +554 -56
- package/dist/autocomplete/types.js.map +1 -1
- package/dist/autocomplete/useAutocomplete.d.ts +22 -0
- package/dist/autocomplete/useAutocomplete.js +281 -0
- package/dist/autocomplete/useAutocomplete.js.map +1 -0
- package/dist/autocomplete/utils.d.ts +81 -0
- package/dist/autocomplete/utils.js +108 -0
- package/dist/autocomplete/utils.js.map +1 -0
- package/dist/avatar/_avatar.scss +93 -2
- package/dist/badge/Badge.d.ts +1 -20
- package/dist/badge/Badge.js +1 -14
- package/dist/badge/Badge.js.map +1 -1
- package/dist/badge/_badge.scss +90 -3
- package/dist/badge/styles.d.ts +26 -0
- package/dist/badge/styles.js +18 -0
- package/dist/badge/styles.js.map +1 -0
- package/dist/box/Box.js +2 -1
- package/dist/box/Box.js.map +1 -1
- package/dist/box/_box.scss +130 -17
- package/dist/box/styles.d.ts +6 -0
- package/dist/box/styles.js +2 -1
- package/dist/box/styles.js.map +1 -1
- package/dist/button/AsyncButton.d.ts +1 -1
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/button/Button.d.ts +2 -1
- package/dist/button/Button.js +2 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/_button.scss +157 -25
- package/dist/card/Card.d.ts +16 -0
- package/dist/card/Card.js +11 -3
- package/dist/card/Card.js.map +1 -1
- package/dist/card/ClickableCard.d.ts +2 -1
- package/dist/card/ClickableCard.js +5 -2
- package/dist/card/ClickableCard.js.map +1 -1
- package/dist/card/_card.scss +90 -19
- package/dist/card/styles.d.ts +0 -7
- package/dist/card/styles.js +2 -3
- package/dist/card/styles.js.map +1 -1
- package/dist/chip/Chip.d.ts +2 -1
- package/dist/chip/Chip.js +2 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/_chip.scss +45 -22
- package/dist/chip/styles.d.ts +12 -10
- package/dist/chip/styles.js.map +1 -1
- package/dist/cssUtils.js.map +1 -1
- package/dist/delegateEvent.d.ts +2 -2
- package/dist/delegateEvent.js.map +1 -1
- package/dist/dialog/Dialog.d.ts +8 -21
- package/dist/dialog/Dialog.js +27 -27
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/FixedDialog.d.ts +1 -3
- package/dist/dialog/FixedDialog.js +0 -8
- package/dist/dialog/FixedDialog.js.map +1 -1
- package/dist/dialog/_dialog.scss +67 -13
- package/dist/dialog/styles.d.ts +56 -0
- package/dist/dialog/styles.js +29 -2
- package/dist/dialog/styles.js.map +1 -1
- package/dist/divider/Divider.d.ts +0 -11
- package/dist/divider/Divider.js.map +1 -1
- package/dist/divider/_divider.scss +7 -1
- package/dist/divider/styles.d.ts +11 -0
- package/dist/divider/styles.js.map +1 -1
- package/dist/draggable/useDraggable.d.ts +6 -6
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.d.ts +3 -3
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
- package/dist/expansion-panel/_expansion-panel.scss +5 -1
- package/dist/expansion-panel/useExpansionPanels.js +12 -24
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
- package/dist/{form → files}/FileInput.d.ts +3 -6
- package/dist/{form → files}/FileInput.js +3 -6
- package/dist/files/FileInput.js.map +1 -0
- package/dist/files/_files.scss +22 -0
- package/dist/files/styles.d.ts +5 -0
- package/dist/files/styles.js +7 -0
- package/dist/files/styles.js.map +1 -0
- package/dist/{form → files}/useFileUpload.d.ts +7 -9
- package/dist/{form → files}/useFileUpload.js +5 -7
- package/dist/files/useFileUpload.js.map +1 -0
- package/dist/files/utils.d.ts +169 -0
- package/dist/files/utils.js +114 -0
- package/dist/files/utils.js.map +1 -0
- package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +11 -176
- package/dist/{form/fileUtils.js → files/validation.js} +10 -135
- package/dist/files/validation.js.map +1 -0
- package/dist/focus/useFocusContainer.d.ts +2 -2
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/focus/utils.js.map +1 -1
- package/dist/form/FormMessage.js.map +1 -1
- package/dist/form/FormMessageContainer.js +4 -2
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/InputToggle.d.ts +2 -1
- package/dist/form/InputToggle.js +2 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/InputToggleIcon.js.map +1 -1
- package/dist/form/Label.js +2 -2
- package/dist/form/Label.js.map +1 -1
- package/dist/form/Listbox.d.ts +24 -0
- package/dist/form/Listbox.js +46 -0
- package/dist/form/Listbox.js.map +1 -0
- package/dist/form/ListboxProvider.d.ts +21 -0
- package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
- package/dist/form/ListboxProvider.js.map +1 -0
- package/dist/form/MenuItemTextField.js +1 -2
- package/dist/form/MenuItemTextField.js.map +1 -1
- package/dist/form/NativeSelect.js +7 -4
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/Option.d.ts +49 -10
- package/dist/form/Option.js +11 -9
- package/dist/form/Option.js.map +1 -1
- package/dist/form/Password.js.map +1 -1
- package/dist/form/Select.d.ts +2 -2
- package/dist/form/Select.js +81 -85
- package/dist/form/Select.js.map +1 -1
- package/dist/form/SelectedOption.js +2 -1
- package/dist/form/SelectedOption.js.map +1 -1
- package/dist/form/Slider.d.ts +4 -4
- package/dist/form/Slider.js +6 -2
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderThumb.d.ts +3 -3
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderValueMarks.d.ts +2 -2
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/SliderValueTooltip.js.map +1 -1
- package/dist/form/TextArea.js +1 -2
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.js +1 -2
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldContainer.js +1 -2
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/_form.scss +193 -124
- package/dist/form/formMessageContainerStyles.d.ts +10 -0
- package/dist/form/formMessageContainerStyles.js +11 -0
- package/dist/form/formMessageContainerStyles.js.map +1 -0
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/optionStyles.d.ts +1 -0
- package/dist/form/optionStyles.js +2 -2
- package/dist/form/optionStyles.js.map +1 -1
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/sliderUtils.d.ts +1 -1
- package/dist/form/sliderUtils.js.map +1 -1
- package/dist/form/textFieldContainerStyles.d.ts +0 -2
- package/dist/form/textFieldContainerStyles.js +1 -2
- package/dist/form/textFieldContainerStyles.js.map +1 -1
- package/dist/form/types.d.ts +3 -10
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCheckboxGroup.d.ts +17 -17
- package/dist/form/useCheckboxGroup.js +9 -17
- package/dist/form/useCheckboxGroup.js.map +1 -1
- package/dist/form/useCombobox.d.ts +56 -21
- package/dist/form/useCombobox.js +19 -4
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useEditableCombobox.d.ts +24 -4
- package/dist/form/useEditableCombobox.js +5 -0
- package/dist/form/useEditableCombobox.js.map +1 -1
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useRadioGroup.d.ts +6 -6
- package/dist/form/useRadioGroup.js.map +1 -1
- package/dist/form/useResizingTextArea.js.map +1 -1
- package/dist/form/useSelectCombobox.d.ts +3 -4
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/useTextField.d.ts +1 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/form/useTextFieldContainerAddons.js.map +1 -1
- package/dist/hoverMode/useHoverMode.d.ts +3 -3
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
- package/dist/icon/FontIcon.d.ts +4 -2
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/TextIconSpacing.d.ts +3 -1
- package/dist/icon/TextIconSpacing.js.map +1 -1
- package/dist/icon/_icon.scss +151 -2
- package/dist/icon/iconConfig.d.ts +10 -0
- package/dist/icon/iconConfig.js +7 -0
- package/dist/icon/iconConfig.js.map +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/icon/styles.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
- package/dist/interaction/UserInteractionModeProvider.js +12 -8
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/types.d.ts +20 -2
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/useElementInteraction.d.ts +7 -1
- package/dist/interaction/useElementInteraction.js +1 -2
- package/dist/interaction/useElementInteraction.js.map +1 -1
- package/dist/interaction/utils.d.ts +2 -2
- package/dist/interaction/utils.js +2 -2
- package/dist/interaction/utils.js.map +1 -1
- package/dist/layout/LayoutWindowSplitter.js.map +1 -1
- package/dist/layout/_layout.scss +23 -10
- package/dist/layout/useExpandableLayout.d.ts +3 -3
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
- package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
- package/dist/layout/useTemporaryLayout.d.ts +2 -2
- package/dist/layout/useTemporaryLayout.js.map +1 -1
- package/dist/link/SkipToMainContent.js.map +1 -1
- package/dist/list/ListItem.d.ts +2 -1
- package/dist/list/ListItem.js +2 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/ListItemChildren.js.map +1 -1
- package/dist/list/ListItemLink.d.ts +2 -1
- package/dist/list/ListItemLink.js +2 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/list/_list.scss +6 -5
- package/dist/media-queries/_media-queries.scss +12 -0
- package/dist/media-queries/appSize.js.map +1 -1
- package/dist/media-queries/useMediaQuery.js +3 -1
- package/dist/media-queries/useMediaQuery.js.map +1 -1
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.d.ts +8 -3
- package/dist/menu/Menu.js +2 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuItemButton.js +6 -2
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/useContextMenu.d.ts +3 -3
- package/dist/menu/useContextMenu.js.map +1 -1
- package/dist/movement/types.d.ts +5 -5
- package/dist/movement/types.js.map +1 -1
- package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
- package/dist/navigation/CollapsibleNavGroup.js +3 -4
- package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
- package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
- package/dist/navigation/DefaultNavigationRenderer.js +6 -2
- package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
- package/dist/navigation/NavItemButton.d.ts +1 -1
- package/dist/navigation/NavItemButton.js +1 -0
- package/dist/navigation/NavItemButton.js.map +1 -1
- package/dist/navigation/NavItemLink.d.ts +3 -2
- package/dist/navigation/NavItemLink.js +6 -2
- package/dist/navigation/NavItemLink.js.map +1 -1
- package/dist/navigation/NavSubheader.d.ts +2 -3
- package/dist/navigation/NavSubheader.js.map +1 -1
- package/dist/navigation/Navigation.d.ts +1 -1
- package/dist/navigation/Navigation.js.map +1 -1
- package/dist/navigation/_navigation.scss +6 -5
- package/dist/navigation/types.d.ts +54 -6
- package/dist/navigation/types.js.map +1 -1
- package/dist/navigation/useActiveHeadingId.d.ts +1 -1
- package/dist/navigation/useActiveHeadingId.js.map +1 -1
- package/dist/navigation/useNavigationExpansion.d.ts +104 -0
- package/dist/navigation/useNavigationExpansion.js +77 -0
- package/dist/navigation/useNavigationExpansion.js.map +1 -0
- package/dist/navigation/utils.d.ts +13 -0
- package/dist/navigation/utils.js +36 -0
- package/dist/navigation/utils.js.map +1 -0
- package/dist/objectFit.d.ts +69 -0
- package/dist/objectFit.js +52 -0
- package/dist/objectFit.js.map +1 -0
- package/dist/overlay/_overlay.scss +2 -1
- package/dist/positioning/useFixedPositioning.d.ts +17 -4
- package/dist/positioning/useFixedPositioning.js +10 -5
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/positioning/utils.js.map +1 -1
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/_progress.scss +20 -14
- package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
- package/dist/responsive-item/ResponsiveItem.js +68 -0
- package/dist/responsive-item/ResponsiveItem.js.map +1 -0
- package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
- package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
- package/dist/responsive-item/_responsive-item.scss +110 -133
- package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
- package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
- package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
- package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
- package/dist/responsive-item/responsiveItemStyles.js +15 -0
- package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
- package/dist/scroll/useScrollLock.d.ts +5 -0
- package/dist/scroll/useScrollLock.js.map +1 -1
- package/dist/searching/utils.d.ts +2 -2
- package/dist/searching/utils.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.d.ts +2 -1
- package/dist/segmented-button/SegmentedButton.js +2 -1
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/_segmented-button.scss +6 -6
- package/dist/sheet/_sheet.scss +18 -6
- package/dist/snackbar/ToastManager.js +15 -5
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/snackbar/_snackbar.scss +30 -17
- package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
- package/dist/snackbar/useCurrentToastActions.js.map +1 -1
- package/dist/table/_table.scss +15 -3
- package/dist/table/tableCellStyles.d.ts +7 -3
- package/dist/table/tableCellStyles.js +2 -2
- package/dist/table/tableCellStyles.js.map +1 -1
- package/dist/tabs/Tab.d.ts +2 -1
- package/dist/tabs/Tab.js +2 -1
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/TabList.d.ts +2 -2
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/TabListScrollButton.d.ts +1 -1
- package/dist/tabs/TabListScrollButton.js +1 -1
- package/dist/tabs/TabListScrollButton.js.map +1 -1
- package/dist/tabs/_tabs.scss +30 -9
- package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
- package/dist/tabs/getTabListScrollToOptions.js +19 -0
- package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
- package/dist/tabs/tabStyles.d.ts +3 -0
- package/dist/tabs/tabStyles.js.map +1 -1
- package/dist/tabs/useTabList.d.ts +1 -8
- package/dist/tabs/useTabList.js +1 -0
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/tabs/useTabs.d.ts +6 -6
- package/dist/tabs/useTabs.js.map +1 -1
- package/dist/tabs/utils.d.ts +0 -18
- package/dist/tabs/utils.js +0 -15
- package/dist/tabs/utils.js.map +1 -1
- package/dist/test-utils/ResizeObserver.d.ts +11 -12
- package/dist/test-utils/ResizeObserver.js +11 -12
- package/dist/test-utils/ResizeObserver.js.map +1 -1
- package/dist/test-utils/matchMedia.d.ts +3 -3
- package/dist/test-utils/matchMedia.js +6 -6
- package/dist/test-utils/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/TextDecoder.js +0 -1
- package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
- package/dist/test-utils/timers.d.ts +9 -5
- package/dist/test-utils/timers.js +5 -5
- package/dist/test-utils/timers.js.map +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
- package/dist/theme/ThemeProvider.js +3 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/_a11y.scss +86 -13
- package/dist/theme/_colors.scss +279 -277
- package/dist/theme/_theme.scss +308 -37
- package/dist/theme/isColorScheme.d.ts +16 -0
- package/dist/theme/isColorScheme.js +19 -0
- package/dist/theme/isColorScheme.js.map +1 -0
- package/dist/theme/types.d.ts +53 -1
- package/dist/theme/types.js +1 -23
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/useCSSVariables.d.ts +2 -19
- package/dist/theme/useCSSVariables.js.map +1 -1
- package/dist/theme/useColorScheme.d.ts +1 -35
- package/dist/theme/useColorScheme.js.map +1 -1
- package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
- package/dist/theme/useColorSchemeProvider.d.ts +1 -1
- package/dist/theme/useColorSchemeProvider.js +1 -1
- package/dist/theme/useColorSchemeProvider.js.map +1 -1
- package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
- package/dist/theme/usePrefersDarkScheme.js.map +1 -0
- package/dist/theme/utils.js.map +1 -1
- package/dist/tooltip/useTooltip.d.ts +14 -9
- package/dist/tooltip/useTooltip.js +2 -1
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/transition/_transition.scss +16 -9
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
- package/dist/transition/types.d.ts +1 -1
- package/dist/transition/types.js.map +1 -1
- package/dist/transition/useCarousel.d.ts +3 -3
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- 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/TreeItem.d.ts +2 -1
- package/dist/tree/TreeItem.js +4 -3
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeItemExpander.js.map +1 -1
- package/dist/tree/_tree.scss +8 -6
- package/dist/tree/useTreeExpansion.d.ts +1 -1
- package/dist/tree/useTreeExpansion.js +6 -18
- package/dist/tree/useTreeExpansion.js.map +1 -1
- package/dist/tree/useTreeSelection.d.ts +1 -1
- package/dist/tree/useTreeSelection.js +7 -25
- package/dist/tree/useTreeSelection.js.map +1 -1
- package/dist/tree/utils.d.ts +1 -1
- package/dist/tree/utils.js.map +1 -1
- package/dist/types.d.ts +12 -4
- package/dist/types.js.map +1 -1
- package/dist/typography/WritingDirectionProvider.d.ts +1 -1
- package/dist/typography/WritingDirectionProvider.js.map +1 -1
- package/dist/typography/_typography.scss +94 -37
- package/dist/typography/typographyStyles.js.map +1 -1
- package/dist/useDebouncedFunction.d.ts +1 -5
- package/dist/useDebouncedFunction.js +3 -1
- package/dist/useDebouncedFunction.js.map +1 -1
- package/dist/useDropzone.d.ts +4 -4
- package/dist/useDropzone.js.map +1 -1
- package/dist/useEnsuredId.js.map +1 -1
- package/dist/useIntersectionObserver.d.ts +5 -5
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useLocalStorage.d.ts +3 -3
- package/dist/useLocalStorage.js +1 -1
- package/dist/useLocalStorage.js.map +1 -1
- package/dist/useMutationObserver.d.ts +1 -1
- package/dist/useMutationObserver.js.map +1 -1
- package/dist/useOrientation.js +3 -1
- package/dist/useOrientation.js.map +1 -1
- package/dist/usePageInactive.d.ts +2 -2
- package/dist/usePageInactive.js.map +1 -1
- package/dist/useReadonlySet.d.ts +76 -0
- package/dist/useReadonlySet.js +72 -0
- package/dist/useReadonlySet.js.map +1 -0
- package/dist/useResizeListener.d.ts +1 -1
- package/dist/useResizeListener.js.map +1 -1
- package/dist/useResizeObserver.d.ts +19 -0
- package/dist/useResizeObserver.js +19 -0
- package/dist/useResizeObserver.js.map +1 -1
- package/dist/useThrottledFunction.d.ts +1 -5
- package/dist/useThrottledFunction.js +3 -1
- package/dist/useThrottledFunction.js.map +1 -1
- package/dist/useToggle.d.ts +3 -3
- package/dist/useToggle.js.map +1 -1
- package/dist/utils/RenderRecursively.d.ts +2 -2
- package/dist/utils/RenderRecursively.js.map +1 -1
- package/dist/utils/alphaNumericSort.d.ts +5 -5
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/bem.d.ts +1 -1
- package/dist/utils/bem.js +1 -1
- package/dist/utils/bem.js.map +1 -1
- package/dist/utils/debounce.d.ts +5 -0
- package/dist/utils/debounce.js +17 -0
- package/dist/utils/debounce.js.map +1 -0
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/parseCssLengthUnit.js.map +1 -1
- package/dist/utils/throttle.d.ts +5 -0
- package/dist/utils/throttle.js +30 -0
- package/dist/utils/throttle.js.map +1 -0
- package/dist/utils/wait.js +3 -1
- package/dist/utils/wait.js.map +1 -1
- package/dist/window-splitter/WindowSplitter.d.ts +37 -15
- package/dist/window-splitter/WindowSplitter.js +38 -17
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/_window-splitter.scss +32 -14
- package/dist/window-splitter/styles.d.ts +14 -0
- package/dist/window-splitter/styles.js +18 -0
- package/dist/window-splitter/styles.js.map +1 -0
- package/package.json +25 -24
- package/src/app-bar/AppBar.tsx +1 -170
- package/src/app-bar/AppBarTitle.tsx +1 -44
- package/src/app-bar/styles.ts +206 -0
- package/src/autocomplete/Autocomplete.tsx +194 -211
- package/src/autocomplete/AutocompleteChip.tsx +48 -0
- package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
- package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
- package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
- package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
- package/src/autocomplete/autocompleteStyles.ts +48 -9
- package/src/autocomplete/defaults.ts +26 -17
- package/src/autocomplete/types.ts +744 -61
- package/src/autocomplete/useAutocomplete.ts +428 -0
- package/src/autocomplete/utils.ts +211 -0
- package/src/badge/Badge.tsx +1 -39
- package/src/badge/styles.ts +45 -0
- package/src/box/Box.tsx +11 -9
- package/src/box/styles.ts +14 -5
- package/src/button/AsyncButton.tsx +1 -1
- package/src/button/Button.tsx +5 -1
- package/src/card/Card.tsx +35 -4
- package/src/card/ClickableCard.tsx +9 -2
- package/src/card/styles.ts +1 -10
- package/src/chip/Chip.tsx +6 -1
- package/src/chip/styles.ts +12 -10
- package/src/delegateEvent.ts +5 -5
- package/src/dialog/Dialog.tsx +48 -61
- package/src/dialog/FixedDialog.tsx +1 -11
- package/src/dialog/styles.ts +97 -0
- package/src/divider/Divider.tsx +0 -12
- package/src/divider/styles.ts +12 -0
- package/src/draggable/useDraggable.ts +17 -10
- package/src/draggable/utils.ts +3 -3
- package/src/expansion-panel/ExpansionPanel.tsx +1 -1
- package/src/expansion-panel/useExpansionPanels.ts +18 -27
- package/src/{form → files}/FileInput.tsx +7 -15
- package/src/files/styles.ts +10 -0
- package/src/{form → files}/useFileUpload.ts +30 -34
- package/src/files/utils.ts +234 -0
- package/src/{form/fileUtils.ts → files/validation.ts} +15 -244
- package/src/focus/useFocusContainer.ts +16 -8
- package/src/form/FormMessageContainer.tsx +2 -2
- package/src/form/InputToggle.tsx +5 -1
- package/src/form/Label.tsx +18 -18
- package/src/form/Listbox.tsx +87 -0
- package/src/form/ListboxProvider.ts +37 -0
- package/src/form/MenuItemTextField.tsx +1 -2
- package/src/form/NativeSelect.tsx +14 -10
- package/src/form/Option.tsx +74 -22
- package/src/form/Select.tsx +89 -85
- package/src/form/SelectedOption.tsx +2 -0
- package/src/form/Slider.tsx +14 -11
- package/src/form/SliderThumb.tsx +4 -4
- package/src/form/SliderValueMarks.tsx +4 -4
- package/src/form/TextArea.tsx +6 -8
- package/src/form/TextField.tsx +0 -2
- package/src/form/TextFieldContainer.tsx +9 -11
- package/src/form/formMessageContainerStyles.ts +22 -0
- package/src/form/optionStyles.ts +7 -2
- package/src/form/sliderUtils.ts +1 -1
- package/src/form/textFieldContainerStyles.ts +9 -14
- package/src/form/types.ts +3 -11
- package/src/form/useCheckboxGroup.ts +28 -36
- package/src/form/useCombobox.ts +86 -38
- package/src/form/useEditableCombobox.ts +43 -8
- package/src/form/useRadioGroup.ts +6 -6
- package/src/form/useSelectCombobox.ts +4 -4
- package/src/form/useTextField.ts +1 -1
- package/src/hoverMode/useHoverMode.ts +3 -3
- package/src/hoverMode/useHoverModeProvider.ts +4 -4
- package/src/icon/FontIcon.tsx +4 -2
- package/src/icon/TextIconSpacing.tsx +1 -1
- package/src/icon/iconConfig.tsx +12 -0
- package/src/interaction/UserInteractionModeProvider.tsx +12 -8
- package/src/interaction/types.ts +21 -2
- package/src/interaction/useElementInteraction.tsx +9 -2
- package/src/interaction/utils.ts +7 -7
- package/src/layout/useExpandableLayout.ts +3 -3
- package/src/layout/useLayoutAppBarHeight.ts +3 -4
- package/src/layout/useTemporaryLayout.ts +2 -2
- package/src/list/ListItem.tsx +5 -1
- package/src/list/ListItemLink.tsx +5 -1
- package/src/media-queries/useMediaQuery.ts +2 -1
- package/src/menu/Menu.tsx +11 -3
- package/src/menu/MenuItemButton.tsx +7 -1
- package/src/menu/useContextMenu.ts +3 -3
- package/src/movement/types.ts +5 -5
- package/src/navigation/CollapsibleNavGroup.tsx +16 -8
- package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
- package/src/navigation/NavItemButton.tsx +2 -1
- package/src/navigation/NavItemLink.tsx +11 -3
- package/src/navigation/NavSubheader.tsx +1 -1
- package/src/navigation/Navigation.tsx +1 -1
- package/src/navigation/types.ts +60 -10
- package/src/navigation/useActiveHeadingId.ts +1 -1
- package/src/navigation/useNavigationExpansion.ts +170 -0
- package/src/navigation/utils.ts +47 -0
- package/src/objectFit.ts +88 -0
- package/src/positioning/useFixedPositioning.ts +34 -11
- package/src/responsive-item/ResponsiveItem.tsx +96 -0
- package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
- package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
- package/src/responsive-item/responsiveItemStyles.ts +81 -0
- package/src/scroll/useScrollLock.ts +6 -0
- package/src/searching/utils.ts +3 -3
- package/src/segmented-button/SegmentedButton.tsx +5 -1
- package/src/snackbar/ToastManager.tsx +16 -5
- package/src/snackbar/useCurrentToastActions.ts +5 -5
- package/src/table/tableCellStyles.ts +10 -6
- package/src/tabs/Tab.tsx +4 -1
- package/src/tabs/TabList.tsx +2 -2
- package/src/tabs/TabListScrollButton.tsx +4 -4
- package/src/tabs/getTabListScrollToOptions.ts +37 -0
- package/src/tabs/tabStyles.ts +4 -0
- package/src/tabs/useTabList.ts +2 -9
- package/src/tabs/useTabs.ts +6 -6
- package/src/tabs/utils.ts +0 -38
- package/src/test-utils/ResizeObserver.ts +11 -12
- package/src/test-utils/matchMedia.ts +7 -7
- package/src/test-utils/polyfills/TextDecoder.ts +0 -1
- package/src/test-utils/timers.ts +10 -7
- package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
- package/src/theme/ThemeProvider.tsx +3 -3
- package/src/theme/isColorScheme.ts +22 -0
- package/src/theme/types.ts +67 -1
- package/src/theme/useCSSVariables.ts +7 -30
- package/src/theme/useColorScheme.ts +1 -40
- package/src/theme/useColorSchemeMetaTag.ts +1 -1
- package/src/theme/useColorSchemeProvider.ts +2 -2
- package/src/tooltip/useTooltip.ts +17 -9
- package/src/transition/types.ts +1 -1
- package/src/transition/useCarousel.ts +3 -3
- package/src/transition/useTransition.ts +1 -0
- package/src/tree/TreeItem.tsx +7 -1
- package/src/tree/TreeItemExpander.tsx +1 -1
- package/src/tree/useTreeExpansion.ts +7 -25
- package/src/tree/useTreeSelection.ts +8 -32
- package/src/tree/utils.ts +6 -2
- package/src/types.ts +20 -4
- package/src/typography/WritingDirectionProvider.tsx +1 -1
- package/src/useDebouncedFunction.ts +4 -9
- package/src/useDropzone.ts +4 -4
- package/src/useIntersectionObserver.ts +5 -5
- package/src/useLocalStorage.ts +6 -6
- package/src/useMutationObserver.ts +1 -1
- package/src/useOrientation.ts +3 -1
- package/src/usePageInactive.ts +2 -2
- package/src/useReadonlySet.ts +122 -0
- package/src/useResizeListener.ts +1 -1
- package/src/useResizeObserver.ts +19 -0
- package/src/useThrottledFunction.ts +6 -9
- package/src/useToggle.ts +3 -3
- package/src/utils/RenderRecursively.tsx +2 -2
- package/src/utils/alphaNumericSort.ts +5 -5
- package/src/utils/bem.ts +1 -1
- package/src/utils/debounce.ts +22 -0
- package/src/utils/throttle.ts +38 -0
- package/src/utils/wait.ts +5 -1
- package/src/window-splitter/WindowSplitter.tsx +38 -43
- package/src/window-splitter/styles.ts +42 -0
- package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
- package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
- package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
- package/dist/dialog/DialogContainer.d.ts +0 -14
- package/dist/dialog/DialogContainer.js +0 -20
- package/dist/dialog/DialogContainer.js.map +0 -1
- package/dist/form/FileInput.js.map +0 -1
- package/dist/form/fileUtils.js.map +0 -1
- package/dist/form/useFileUpload.js.map +0 -1
- package/dist/form/useListboxProvider.d.ts +0 -31
- package/dist/form/useListboxProvider.js.map +0 -1
- package/dist/navigation/getHrefFromParents.d.ts +0 -5
- package/dist/navigation/getHrefFromParents.js +0 -13
- package/dist/navigation/getHrefFromParents.js.map +0 -1
- package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
- package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
- package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
- package/dist/responsive-item/styles.d.ts +0 -34
- package/dist/responsive-item/styles.js +0 -17
- package/dist/responsive-item/styles.js.map +0 -1
- package/dist/theme/usePrefersColorScheme.js.map +0 -1
- package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
- package/src/dialog/DialogContainer.tsx +0 -28
- package/src/form/useListboxProvider.ts +0 -45
- package/src/navigation/getHrefFromParents.ts +0 -15
- package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
- package/src/responsive-item/styles.ts +0 -58
- /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
- /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { type UseStateInitializer, type UseStateSetter } from "../types.js";
|
|
4
|
+
import { useReadonlySet } from "../useReadonlySet.js";
|
|
5
|
+
import {
|
|
6
|
+
type NavigationExpansion,
|
|
7
|
+
type NavigationLinkComponent,
|
|
8
|
+
type NavigationRenderData,
|
|
9
|
+
} from "./types.js";
|
|
10
|
+
import { getPartsFromPathname } from "./utils.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @since 6.0.0
|
|
14
|
+
*/
|
|
15
|
+
export interface NavigationExpansionOptions {
|
|
16
|
+
pathname: string;
|
|
17
|
+
linkComponent: NavigationLinkComponent;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* An optional list or set of items that should be expanded before the user
|
|
21
|
+
* interacts with the navigation items.
|
|
22
|
+
*
|
|
23
|
+
* The default implementation works well with the `DefaultNavigationRenderer`
|
|
24
|
+
* by allowing all "folders" (or groups) of items to be expanded by the
|
|
25
|
+
* `pathname`.
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* const navItems: readonly NavigationItem[] = [
|
|
29
|
+
* {
|
|
30
|
+
* type: "route",
|
|
31
|
+
* href: "/",
|
|
32
|
+
* children: "Home",
|
|
33
|
+
* },
|
|
34
|
+
* {
|
|
35
|
+
* type: "group",
|
|
36
|
+
* href: "/group-1",
|
|
37
|
+
* children: "Group 1",
|
|
38
|
+
* items: [
|
|
39
|
+
* {
|
|
40
|
+
* type: "group",
|
|
41
|
+
* href: "/subgroup-1",
|
|
42
|
+
* children: "Subgroup 1",
|
|
43
|
+
* items: [
|
|
44
|
+
* {
|
|
45
|
+
* type: "route",
|
|
46
|
+
* href: "/route",
|
|
47
|
+
* children: "Group 1 > Subgroup 1 > Route"
|
|
48
|
+
* },
|
|
49
|
+
* ],
|
|
50
|
+
* },
|
|
51
|
+
* {
|
|
52
|
+
* type: "route",
|
|
53
|
+
* href: "/route",
|
|
54
|
+
* children: "Group 1 > Route",
|
|
55
|
+
* },
|
|
56
|
+
* ],
|
|
57
|
+
* },
|
|
58
|
+
* ];
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* - `pathname === "/"` - No groups expanded
|
|
62
|
+
* - Resolves as `new Set(["/"])`
|
|
63
|
+
* - `pathname === "/group-1/subgroup-1/route"` - "Group 1" and "Subgroup 1"
|
|
64
|
+
* are expanded
|
|
65
|
+
* - Resolves as `new Set(["/", "/group-1", "/group-1/route"])`
|
|
66
|
+
*/
|
|
67
|
+
defaultExpandedItems?: UseStateInitializer<
|
|
68
|
+
ReadonlySet<string> | readonly string[]
|
|
69
|
+
>;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The default behavior is to update the `expandedItems` set as the `pathname`
|
|
73
|
+
* updates to capture anytime the user might navigate to outer routes outside
|
|
74
|
+
* of the `Navigation` component. i.e. Click a link within the page.
|
|
75
|
+
*
|
|
76
|
+
* Set this to `true` to disable this behavior.
|
|
77
|
+
*
|
|
78
|
+
* @defaultValue `false`
|
|
79
|
+
*/
|
|
80
|
+
disableFollowingPathname?: boolean;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @since 6.0.0
|
|
85
|
+
*/
|
|
86
|
+
export interface NavigationExpansionImplementation extends NavigationExpansion {
|
|
87
|
+
data: NavigationRenderData;
|
|
88
|
+
setExpandedItems: UseStateSetter<ReadonlySet<string>>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Used to create the `data` prop for the `Navigation` component and handling
|
|
93
|
+
* the expansion of items.
|
|
94
|
+
*
|
|
95
|
+
* @example Main Usage
|
|
96
|
+
* ```tsx
|
|
97
|
+
* "use client";
|
|
98
|
+
* import { Navigation } from "@react-md/core/navigation/Navigation";
|
|
99
|
+
* import { useNavigationExpansion } from "@react-md/core/navigation/useNavigationExpansion";
|
|
100
|
+
* import Link from "next/link";
|
|
101
|
+
* import { usePathname } from "next/navigation.js";
|
|
102
|
+
* import { type ReactElement } from "react";
|
|
103
|
+
*
|
|
104
|
+
* import { navItems } from "./navItems.js";
|
|
105
|
+
*
|
|
106
|
+
* export function Example(): ReactElement {
|
|
107
|
+
* const pathname = usePathname();
|
|
108
|
+
* const { data } = useNavigationExpansion({
|
|
109
|
+
* pathname,
|
|
110
|
+
* linkComponent: Link,
|
|
111
|
+
* });
|
|
112
|
+
*
|
|
113
|
+
* return <Navigation data={data} items={navItems} />;
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @since 6.0.0
|
|
118
|
+
*/
|
|
119
|
+
export function useNavigationExpansion(
|
|
120
|
+
options: NavigationExpansionOptions
|
|
121
|
+
): NavigationExpansionImplementation {
|
|
122
|
+
const {
|
|
123
|
+
pathname,
|
|
124
|
+
linkComponent,
|
|
125
|
+
defaultExpandedItems,
|
|
126
|
+
disableFollowingPathname,
|
|
127
|
+
} = options;
|
|
128
|
+
const {
|
|
129
|
+
value: expandedItems,
|
|
130
|
+
setValue: setExpandedItems,
|
|
131
|
+
toggleValue: toggleExpandedItem,
|
|
132
|
+
} = useReadonlySet({
|
|
133
|
+
defaultValue:
|
|
134
|
+
defaultExpandedItems ?? (() => new Set(getPartsFromPathname(pathname))),
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const prevPathname = useRef(pathname);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
if (disableFollowingPathname || pathname === prevPathname.current) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
prevPathname.current = pathname;
|
|
144
|
+
setExpandedItems((prev) => {
|
|
145
|
+
const next = new Set([...prev, ...getPartsFromPathname(pathname)]);
|
|
146
|
+
if (next.size === prev.size) {
|
|
147
|
+
return prev;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return next;
|
|
151
|
+
});
|
|
152
|
+
}, [disableFollowingPathname, pathname, setExpandedItems]);
|
|
153
|
+
|
|
154
|
+
const data = useMemo<NavigationRenderData>(
|
|
155
|
+
() => ({
|
|
156
|
+
pathname,
|
|
157
|
+
linkComponent,
|
|
158
|
+
expandedItems,
|
|
159
|
+
toggleExpandedItem,
|
|
160
|
+
}),
|
|
161
|
+
[expandedItems, linkComponent, pathname, toggleExpandedItem]
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
data,
|
|
166
|
+
expandedItems,
|
|
167
|
+
setExpandedItems,
|
|
168
|
+
toggleExpandedItem,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type NavigationItem } from "./types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 6.0.0
|
|
5
|
+
*/
|
|
6
|
+
export function getHrefFromParents(parents: readonly NavigationItem[]): string {
|
|
7
|
+
return parents.reduce<string>((result, parent) => {
|
|
8
|
+
if ("href" in parent && parent.href) {
|
|
9
|
+
const { href } = parent;
|
|
10
|
+
return result + href;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return result;
|
|
14
|
+
}, "");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @since 6.0.0
|
|
19
|
+
*/
|
|
20
|
+
export function getNavigationGroupId(
|
|
21
|
+
group: NavigationItem,
|
|
22
|
+
parents: readonly NavigationItem[]
|
|
23
|
+
): string {
|
|
24
|
+
if ("id" in group && typeof group.id === "string" && group.id) {
|
|
25
|
+
return group.id;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return getHrefFromParents(parents);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @since 6.0.0
|
|
33
|
+
*/
|
|
34
|
+
export function getPartsFromPathname(pathname: string): ReadonlySet<string> {
|
|
35
|
+
// remove trailing slashes just in case there aren't rewrites in place
|
|
36
|
+
const href = pathname.replace(/\/{2,}/g, "/").replace(/\/+$/, "");
|
|
37
|
+
const parts = href.split("/");
|
|
38
|
+
const set = new Set<string>();
|
|
39
|
+
let prefix = "";
|
|
40
|
+
for (const part of parts) {
|
|
41
|
+
const slashed = `/${part}`;
|
|
42
|
+
prefix = prefix === "/" ? slashed : prefix + slashed;
|
|
43
|
+
set.add(prefix);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return set;
|
|
47
|
+
}
|
package/src/objectFit.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { cnb } from "cnbuilder";
|
|
2
|
+
import { bem } from "./utils/bem.js";
|
|
3
|
+
|
|
4
|
+
const styles = bem("rmd-object-fit");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @since 6.0.0
|
|
8
|
+
*/
|
|
9
|
+
export interface ObjectFitOptions {
|
|
10
|
+
className?: string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit}
|
|
14
|
+
* @defaultValue `aspectRatio ? "fill" : "contain"`
|
|
15
|
+
*/
|
|
16
|
+
fit?: "contain" | "cover" | "fill" | "none" | "scale-down";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Set this to a custom aspect ratio to use.
|
|
20
|
+
*
|
|
21
|
+
* @example Valid Aspect Ratios
|
|
22
|
+
* ```tsx
|
|
23
|
+
* aspectRatio: "16-9",
|
|
24
|
+
* aspectRatio: "9-16",
|
|
25
|
+
* aspectRatio: "3-4",
|
|
26
|
+
* aspectRatio: "4-3",
|
|
27
|
+
* aspectRatio: "1-1",
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* These values are based on the `$object-fit-aspect-ratios` map.
|
|
31
|
+
*
|
|
32
|
+
* @defaultValue `""`
|
|
33
|
+
*/
|
|
34
|
+
aspectRatio?: `${number}-${number}`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* This is a utility className helper function that should be applied to
|
|
39
|
+
* `<img>` and `<video>` elements to make them responsive to their content box
|
|
40
|
+
* container.
|
|
41
|
+
*
|
|
42
|
+
* @example Simple Example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* import { objectFit } from "@react-md/core/objectFit";
|
|
45
|
+
*
|
|
46
|
+
* export function Example() {
|
|
47
|
+
* return (
|
|
48
|
+
* <img
|
|
49
|
+
* alt=""
|
|
50
|
+
* src="https://example.com/example.png"
|
|
51
|
+
* className={objectFit()}
|
|
52
|
+
* />
|
|
53
|
+
* );
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example Setting Aspect Ratio
|
|
58
|
+
* ```tsx
|
|
59
|
+
* import { objectFit } from "@react-md/core/objectFit";
|
|
60
|
+
*
|
|
61
|
+
* export function Example() {
|
|
62
|
+
* return (
|
|
63
|
+
* <img
|
|
64
|
+
* alt=""
|
|
65
|
+
* src="https://example.com/example.png"
|
|
66
|
+
* className={objectFit({
|
|
67
|
+
* aspectRatio: "16-9",
|
|
68
|
+
* })}
|
|
69
|
+
* />
|
|
70
|
+
* );
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @since 6.0.0
|
|
76
|
+
*/
|
|
77
|
+
export function objectFit(options: ObjectFitOptions = {}): string {
|
|
78
|
+
const { className, fit: propFit, aspectRatio = "" } = options;
|
|
79
|
+
const fit = propFit ?? (aspectRatio ? "fill" : "contain");
|
|
80
|
+
|
|
81
|
+
return cnb(
|
|
82
|
+
styles({
|
|
83
|
+
[fit]: fit !== "contain",
|
|
84
|
+
[aspectRatio]: !!aspectRatio,
|
|
85
|
+
}),
|
|
86
|
+
className
|
|
87
|
+
);
|
|
88
|
+
}
|
|
@@ -15,7 +15,11 @@ import { useEnsuredRef } from "../useEnsuredRef.js";
|
|
|
15
15
|
import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect.js";
|
|
16
16
|
import { BELOW_CENTER_ANCHOR } from "./constants.js";
|
|
17
17
|
import { getFixedPosition } from "./getFixedPosition.js";
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
type CalculateFixedPositionOptions,
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
type FixedPositionStyle,
|
|
22
|
+
} from "./types.js";
|
|
19
23
|
import { isWithinViewport } from "./utils.js";
|
|
20
24
|
|
|
21
25
|
const noop = (): undefined => undefined;
|
|
@@ -109,7 +113,7 @@ export interface FixedPositioningOptions<
|
|
|
109
113
|
* some options require the element to be in the DOM for specific
|
|
110
114
|
* calculations.
|
|
111
115
|
*/
|
|
112
|
-
getFixedPositionOptions
|
|
116
|
+
getFixedPositionOptions?: () => CalculateFixedPositionOptions;
|
|
113
117
|
|
|
114
118
|
/**
|
|
115
119
|
* An optional function to call if the page resizes while the `FixedElement`
|
|
@@ -118,6 +122,17 @@ export interface FixedPositioningOptions<
|
|
|
118
122
|
onResize?: EventListener;
|
|
119
123
|
/** @see {@link TransitionScrollCallback} */
|
|
120
124
|
onScroll?: TransitionScrollCallback<FixedToElement, FixedElement>;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Set this to `true` to disable the fixed positioning behavior so it can be
|
|
128
|
+
* customized within CSS or manually instead. This was added mostly to just
|
|
129
|
+
* support rendering menus inline with other content (like autocompletes
|
|
130
|
+
* within a dialog).
|
|
131
|
+
*
|
|
132
|
+
* @defaultValue `false`
|
|
133
|
+
* @since 6.0.0
|
|
134
|
+
*/
|
|
135
|
+
disabled?: boolean;
|
|
121
136
|
}
|
|
122
137
|
|
|
123
138
|
/**
|
|
@@ -135,9 +150,12 @@ export interface FixedPositioningHookReturnValue<E extends HTMLElement> {
|
|
|
135
150
|
ref: RefCallback<E>;
|
|
136
151
|
|
|
137
152
|
/**
|
|
138
|
-
*
|
|
153
|
+
* This is the {@link FixedPositionStyle} merged with the
|
|
154
|
+
* {@link FixedPositioningOptions.style}. This will only return `undefined`
|
|
155
|
+
* when {@link FixedPositioningOptions.disabled} is `true` and no `style` was
|
|
156
|
+
* provided.
|
|
139
157
|
*/
|
|
140
|
-
style: CSSProperties;
|
|
158
|
+
style: CSSProperties | undefined;
|
|
141
159
|
|
|
142
160
|
/**
|
|
143
161
|
* This should really only be used if the {@link transitionOptions} is not
|
|
@@ -148,7 +166,7 @@ export interface FixedPositioningHookReturnValue<E extends HTMLElement> {
|
|
|
148
166
|
/**
|
|
149
167
|
* A function that can be called to update the style for the fixed element.
|
|
150
168
|
*/
|
|
151
|
-
updateStyle()
|
|
169
|
+
updateStyle: () => void;
|
|
152
170
|
|
|
153
171
|
/** {@inheritDoc FixedPositioningTransitionOptions} */
|
|
154
172
|
transitionOptions: Readonly<Required<FixedPositioningTransitionOptions<E>>>;
|
|
@@ -219,6 +237,7 @@ export function useFixedPositioning<
|
|
|
219
237
|
style: propStyle,
|
|
220
238
|
nodeRef,
|
|
221
239
|
fixedTo,
|
|
240
|
+
disabled,
|
|
222
241
|
onEnter = noop,
|
|
223
242
|
onEntering = noop,
|
|
224
243
|
onEntered = noop,
|
|
@@ -310,6 +329,10 @@ export function useFixedPositioning<
|
|
|
310
329
|
);
|
|
311
330
|
|
|
312
331
|
const updateStyle = useCallback(() => {
|
|
332
|
+
if (disabled) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
|
|
313
336
|
const {
|
|
314
337
|
ref,
|
|
315
338
|
fixedTo,
|
|
@@ -348,12 +371,12 @@ export function useFixedPositioning<
|
|
|
348
371
|
setStyle(style);
|
|
349
372
|
setActive(!!element && !element.hidden);
|
|
350
373
|
|
|
351
|
-
// Only changing the initialX
|
|
352
|
-
// to trigger, which is why everything else is set in a ref.
|
|
353
|
-
}, [initialX, initialY]);
|
|
374
|
+
// Only changing the initialX, initialY, or disabled should cause the
|
|
375
|
+
// useEffect below to trigger, which is why everything else is set in a ref.
|
|
376
|
+
}, [disabled, initialX, initialY]);
|
|
354
377
|
|
|
355
378
|
useEffect(() => {
|
|
356
|
-
if (!active) {
|
|
379
|
+
if (!active || disabled) {
|
|
357
380
|
return;
|
|
358
381
|
}
|
|
359
382
|
|
|
@@ -385,7 +408,7 @@ export function useFixedPositioning<
|
|
|
385
408
|
resizeHandler.remove(resizeCallback);
|
|
386
409
|
scrollHandler.remove(scrollCallback);
|
|
387
410
|
};
|
|
388
|
-
}, [active, fixedTo, onResize, onScroll, ref, updateStyle]);
|
|
411
|
+
}, [active, disabled, fixedTo, onResize, onScroll, ref, updateStyle]);
|
|
389
412
|
|
|
390
413
|
const callbacks: Required<FixedPositioningTransitionCallbacks> = {
|
|
391
414
|
onEnter(appearing) {
|
|
@@ -408,7 +431,7 @@ export function useFixedPositioning<
|
|
|
408
431
|
|
|
409
432
|
return {
|
|
410
433
|
ref: refHandler,
|
|
411
|
-
style: { ...style, ...propStyle },
|
|
434
|
+
style: disabled ? propStyle : { ...style, ...propStyle },
|
|
412
435
|
callbacks,
|
|
413
436
|
updateStyle,
|
|
414
437
|
transitionOptions: {
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { forwardRef, type HTMLAttributes } from "react";
|
|
2
|
+
import {
|
|
3
|
+
responsiveItem,
|
|
4
|
+
type ResponsiveItemClassNameOptions,
|
|
5
|
+
} from "./responsiveItemStyles.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @since 6.0.0 Renamed from `MediaContainerProps` to
|
|
9
|
+
* `ResponsiveItemProps`
|
|
10
|
+
* @since 6.0.0 The `height` and `width` props were removed in favor of the
|
|
11
|
+
* `aspectRatio` props since the latest typescript string interpolation supports
|
|
12
|
+
* enforcing the correct format.
|
|
13
|
+
* @since 6.0.0 The `auto` prop was removed in favor of the new
|
|
14
|
+
* {@link ResponsiveItemProps.responsive} prop.
|
|
15
|
+
*/
|
|
16
|
+
export interface ResponsiveItemProps
|
|
17
|
+
extends HTMLAttributes<HTMLSpanElement>,
|
|
18
|
+
ResponsiveItemClassNameOptions {}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @example Image Example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* import { ResponsiveItem } from "@react-md/core";
|
|
24
|
+
* import type { ReactElement } from "react";
|
|
25
|
+
*
|
|
26
|
+
* function Example(): ReactElement {
|
|
27
|
+
* return (
|
|
28
|
+
* <ResponsiveItem>
|
|
29
|
+
* <img alt="" src="/some-image.png" />
|
|
30
|
+
* </ResponsiveItem>
|
|
31
|
+
* );
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example Iframe Example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* import { ResponsiveItem } from "@react-md/core";
|
|
38
|
+
* import type { ReactElement } from "react";
|
|
39
|
+
*
|
|
40
|
+
* function Example(): ReactElement {
|
|
41
|
+
* return (
|
|
42
|
+
* <ResponsiveItem>
|
|
43
|
+
* <iframe
|
|
44
|
+
* src="https://youtube.com/some-video-url"
|
|
45
|
+
* title="Some YouTube video"
|
|
46
|
+
* allowFullScreen
|
|
47
|
+
* />
|
|
48
|
+
* </ResponsiveItem>
|
|
49
|
+
* );
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example Forced Aspect Ratio
|
|
54
|
+
* ```tsx
|
|
55
|
+
* import { ResponsiveItem } from "@react-md/core";
|
|
56
|
+
* import type { ReactElement } from "react";
|
|
57
|
+
*
|
|
58
|
+
* function Example(): ReactElement {
|
|
59
|
+
* return (
|
|
60
|
+
* <ResponsiveItem aspectRatio="16-9">
|
|
61
|
+
* <img alt="" src="/some-image.png" />
|
|
62
|
+
* </ResponsiveItem>
|
|
63
|
+
* );
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @since 6.0.0 Renamed from `MediaContainer` to
|
|
68
|
+
* `ResponsiveItem` and renders a `<span>` instead of a `<div>`.
|
|
69
|
+
*/
|
|
70
|
+
export const ResponsiveItem = forwardRef<HTMLSpanElement, ResponsiveItemProps>(
|
|
71
|
+
function ResponsiveItem(props, ref) {
|
|
72
|
+
const {
|
|
73
|
+
className,
|
|
74
|
+
fullWidth = false,
|
|
75
|
+
aspectRatio,
|
|
76
|
+
responsive = "auto",
|
|
77
|
+
children,
|
|
78
|
+
...remaining
|
|
79
|
+
} = props;
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<span
|
|
83
|
+
{...remaining}
|
|
84
|
+
ref={ref}
|
|
85
|
+
className={responsiveItem({
|
|
86
|
+
className,
|
|
87
|
+
fullWidth,
|
|
88
|
+
aspectRatio,
|
|
89
|
+
responsive,
|
|
90
|
+
})}
|
|
91
|
+
>
|
|
92
|
+
{children}
|
|
93
|
+
</span>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
@@ -1,50 +1,10 @@
|
|
|
1
|
-
import { cnb } from "cnbuilder";
|
|
2
1
|
import { forwardRef, type HTMLAttributes } from "react";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* the sizes are self-explanatory, but the `middle` position will be centered
|
|
10
|
-
* vertically while `center` will be centered `horizontally`.
|
|
11
|
-
*
|
|
12
|
-
* @since 6.0.0 Renamed from `MediaOverlayPosition` to
|
|
13
|
-
* `ResponsiveItemOverlayProps`.
|
|
14
|
-
*/
|
|
15
|
-
export type ResponsiveItemOverlayPosition =
|
|
16
|
-
| "top"
|
|
17
|
-
| "right"
|
|
18
|
-
| "bottom"
|
|
19
|
-
| "left"
|
|
20
|
-
| "middle"
|
|
21
|
-
| "center"
|
|
22
|
-
| "absolute-center";
|
|
23
|
-
|
|
24
|
-
/** @since 6.0.0 */
|
|
25
|
-
export interface ResponsiveItemOverlayClassNameOptions {
|
|
26
|
-
className?: string;
|
|
27
|
-
/** @defaultValue `"bottom"` */
|
|
28
|
-
position?: ResponsiveItemOverlayPosition;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @since 6.0.0
|
|
33
|
-
*/
|
|
34
|
-
export function responsiveItemOverlay(
|
|
35
|
-
options: ResponsiveItemOverlayClassNameOptions = {}
|
|
36
|
-
): string {
|
|
37
|
-
const { className, position = "bottom" } = options;
|
|
38
|
-
|
|
39
|
-
return cnb(
|
|
40
|
-
styles({
|
|
41
|
-
[position]: true,
|
|
42
|
-
horizontal:
|
|
43
|
-
position !== "top" && position !== "bottom" && position !== "middle",
|
|
44
|
-
}),
|
|
45
|
-
className
|
|
46
|
-
);
|
|
47
|
-
}
|
|
2
|
+
import {
|
|
3
|
+
responsiveItemOverlay,
|
|
4
|
+
type ResponsiveItemOverlayClassNameOptions,
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
|
+
type ResponsiveItemOverlayPosition,
|
|
7
|
+
} from "./responsiveItemOverlayStyles.js";
|
|
48
8
|
|
|
49
9
|
/**
|
|
50
10
|
* @since 6.0.0 Renamed from `MediaOverlayProps` to
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { cnb } from "cnbuilder";
|
|
2
|
+
import { bem } from "../utils/bem.js";
|
|
3
|
+
|
|
4
|
+
const styles = bem("rmd-responsive-item-overlay");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The overlay positions relative to the `MediaContainer` component. Most of
|
|
8
|
+
* the sizes are self-explanatory, but the `middle` position will be centered
|
|
9
|
+
* vertically while `center` will be centered `horizontally`.
|
|
10
|
+
*
|
|
11
|
+
* @since 6.0.0 Renamed from `MediaOverlayPosition` to
|
|
12
|
+
* `ResponsiveItemOverlayProps`.
|
|
13
|
+
*/
|
|
14
|
+
export type ResponsiveItemOverlayPosition =
|
|
15
|
+
| "top"
|
|
16
|
+
| "right"
|
|
17
|
+
| "bottom"
|
|
18
|
+
| "left"
|
|
19
|
+
| "middle"
|
|
20
|
+
| "center"
|
|
21
|
+
| "absolute-center";
|
|
22
|
+
|
|
23
|
+
/** @since 6.0.0 */
|
|
24
|
+
export interface ResponsiveItemOverlayClassNameOptions {
|
|
25
|
+
className?: string;
|
|
26
|
+
/** @defaultValue `"bottom"` */
|
|
27
|
+
position?: ResponsiveItemOverlayPosition;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @since 6.0.0
|
|
32
|
+
*/
|
|
33
|
+
export function responsiveItemOverlay(
|
|
34
|
+
options: ResponsiveItemOverlayClassNameOptions = {}
|
|
35
|
+
): string {
|
|
36
|
+
const { className, position = "bottom" } = options;
|
|
37
|
+
|
|
38
|
+
return cnb(
|
|
39
|
+
styles({
|
|
40
|
+
[position]: true,
|
|
41
|
+
horizontal:
|
|
42
|
+
position !== "top" && position !== "bottom" && position !== "middle",
|
|
43
|
+
}),
|
|
44
|
+
className
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { cnb } from "cnbuilder";
|
|
2
|
+
import { bem } from "../utils/bem.js";
|
|
3
|
+
|
|
4
|
+
const styles = bem("rmd-responsive-item");
|
|
5
|
+
|
|
6
|
+
/** @since 6.0.0 */
|
|
7
|
+
export interface ResponsiveItemClassNameOptions {
|
|
8
|
+
className?: string;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Set this to `true` if the container should gain the following styles:
|
|
12
|
+
*
|
|
13
|
+
* ```scss
|
|
14
|
+
* display: block;
|
|
15
|
+
* width: 100%;
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @defaultValue `false`
|
|
19
|
+
*/
|
|
20
|
+
fullWidth?: boolean;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Set this to a custom aspect ratio to use.
|
|
24
|
+
*
|
|
25
|
+
* @example Valid Aspect Ratios
|
|
26
|
+
* ```tsx
|
|
27
|
+
* aspectRatio="16-9"
|
|
28
|
+
* aspectRatio="9-16"
|
|
29
|
+
* aspectRatio="3-4"
|
|
30
|
+
* aspectRatio="4-3"
|
|
31
|
+
* aspectRatio="1-1"
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* These values are based on the `core.$responsive-item-aspect-ratios` map.
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `""`
|
|
37
|
+
*/
|
|
38
|
+
aspectRatio?: `${number}-${number}`;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Set this to `"manual"` if you want to manually specify which elements are
|
|
42
|
+
* responsive items using custom class names. You probably don't really want
|
|
43
|
+
* to use this.
|
|
44
|
+
*
|
|
45
|
+
* Set this to `"auto"` to automatically update all visual media that appear
|
|
46
|
+
* as a child in this component to a responsive item.
|
|
47
|
+
*
|
|
48
|
+
* Set this to `"container"` to automatically update all visual media that
|
|
49
|
+
* appear as a child in this component to be a responsive item that scales to
|
|
50
|
+
* the container's dimensions.
|
|
51
|
+
*
|
|
52
|
+
* Note: The `"auto"` and `"container"` values use the
|
|
53
|
+
* `core.$responsive-item-selectors` value for their behavior.
|
|
54
|
+
*
|
|
55
|
+
* @defaultValue `"auto"`
|
|
56
|
+
*/
|
|
57
|
+
responsive?: "auto" | "manual" | "container";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** @since 6.0.0 */
|
|
61
|
+
export function responsiveItem(
|
|
62
|
+
options: ResponsiveItemClassNameOptions = {}
|
|
63
|
+
): string {
|
|
64
|
+
const {
|
|
65
|
+
className,
|
|
66
|
+
fullWidth = false,
|
|
67
|
+
aspectRatio = "",
|
|
68
|
+
responsive = "auto",
|
|
69
|
+
} = options;
|
|
70
|
+
|
|
71
|
+
return cnb(
|
|
72
|
+
styles({
|
|
73
|
+
auto: responsive !== "manual",
|
|
74
|
+
"auto-scale": responsive === "container",
|
|
75
|
+
"aspect-ratio": aspectRatio,
|
|
76
|
+
[aspectRatio]: aspectRatio,
|
|
77
|
+
"full-width": fullWidth,
|
|
78
|
+
}),
|
|
79
|
+
className
|
|
80
|
+
);
|
|
81
|
+
}
|