Since
node-sass has been deprecated and
a new module system has been introduced
users must switch from node-sass to sass to use the latest features within
react-md.
npm update react-md
npm uninstall node-sass
npm install sass or with yarn
yarn add react-md
yarn remove node-sass
yarn add sass The InteractionModeListener was an alias for UserInteractionModeListener and
has been removed.
The ResizeObserver component has been removed in favor of using the
useResizeObserver hook.
-const ref = useRef()
-useResizeObserver({
- target: ref,
- onResize({ height, width, scrollHeight, scrollWidth, element }) {
- // Do something
- }
- disableHeight: true,
- disableWidth: true
-});
+const [ref] = useResizeObserver((resizeEvent) => {
+ const { height, width, scrollHeight, scrollWidth, element } = resizeEvent
+ // do something
+}, { disableHeight: true, disableWidth: true });
return (
<div ref={ref}>
{children}
</div>
); Since the Tooltip components now use the HoverModeProvider, the following
props should be removed from the Tooltipped component:
onHideonShowtooltipIdhoverDelayfocusDelaytouchTimeoutpositionThresholdThis component has been removed since the Tooltip uses the
HoverModeProvider.
const {
getProps,
rootProps,
// checkedValues,
// setCheckedValues,
-} = useIndeterminateChecked(condiments, ["Sprouts"], customOnChange);
+} = useIndeterminateChecked(condiments, {
+ onChange: customOnChange,
+ defaultCheckedValues: ["Sprouts"],
}); Part of the v3.0.0 release was to create a new Sass import that merges all the .scss files into one for two reasons:
@use statement
instead of multiple lines.scss file needs to be resolved.sass-loader with webpack does not maintain context of other .scss files in
your app so each time you import './path/to/my.scss'; or
import styles from './path/to/my.module.scss';, sass-loader will need to
resolve every @import or @use statement found in that file recursively. The
IO required for this is the whole reason build times can get slow in larger
projects since there are about 200 .scss files within react-md that would need
to be resolved. Combining all the files as a build step within react-md removes
this issue and drastically increases build performance.
To get started, update your main .scss file that imports all the packages
within react-md and generates the styles:
-@import '~@react-md/alert/dist/mixins';
-@import '~@react-md/app-bar/dist/mixins';
-@import '~@react-md/avatar/dist/mixins';
-@import '~@react-md/badge/dist/mixins';
-@import '~@react-md/button/dist/mixins';
-@import '~@react-md/card/dist/mixins';
-@import '~@react-md/chip/dist/mixins';
-@import '~@react-md/dialog/dist/mixins';
-@import '~@react-md/divider/dist/mixins';
-@import '~@react-md/elevation/dist/mixins';
-@import '~@react-md/expansion-panel/dist/mixins';
-@import '~@react-md/form/dist/mixins';
-@import '~@react-md/icon/dist/mixins';
-@import '~@react-md/layout/dist/mixins';
-@import '~@react-md/link/dist/mixins';
-@import '~@react-md/list/dist/mixins';
-@import '~@react-md/media/dist/mixins';
-@import '~@react-md/menu/dist/mixins';
-@import '~@react-md/overlay/dist/mixins';
-@import '~@react-md/progress/dist/mixins';
-@import '~@react-md/sheet/dist/mixins';
-@import '~@react-md/states/dist/mixins';
-@import '~@react-md/table/dist/mixins';
-@import '~@react-md/tabs/dist/mixins';
-@import '~@react-md/theme/dist/mixins';
-@import '~@react-md/tooltip/dist/mixins';
-@import '~@react-md/transition/dist/mixins';
-@import '~@react-md/tree/dist/mixins';
-@import '~@react-md/typography/dist/mixins';
-@import '~@react-md/utils/dist/mixins';
+@use 'react-md' as *;
@include react-md-utils; Once the main styles have been generated, update the remaining .scss files in
your app replacing @import statements of react-md packages to be
@use 'react-md' as *;.
Check out the new customizing your theme documentation to see how you can
override react-md Sass variables with the new module system and a recommended
setup.