From 43c55754919407a6d700a9133ff6eb8db50858c2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 1 Jan 2023 18:13:16 +0100 Subject: [PATCH] theme: separated css classes and detect css baseline in unified theme provider Signed-off-by: Patrik Oldsberg --- .../src/unified/UnifiedThemeProvider.tsx | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/packages/theme/src/unified/UnifiedThemeProvider.tsx b/packages/theme/src/unified/UnifiedThemeProvider.tsx index f2cc2d573f..75fcc3c6ae 100644 --- a/packages/theme/src/unified/UnifiedThemeProvider.tsx +++ b/packages/theme/src/unified/UnifiedThemeProvider.tsx @@ -16,6 +16,7 @@ import React, { ReactNode } from 'react'; import { + StylesProvider as Mui4StylesProvider, Theme as Mui4Theme, ThemeProvider as Mui4Provider, } from '@material-ui/core/styles'; @@ -24,9 +25,21 @@ import { Theme as Mui5Theme, ThemeProvider as Mui5Provider, } from '@mui/material/styles'; -import CssBaseline from '@mui/material/CssBaseline'; +import { + StylesProvider as Mui5StylesProvider, + createGenerateClassName, +} from '@mui/styles'; +import Mui4CssBaseline from '@material-ui/core/CssBaseline'; +import Mui5CssBaseline from '@mui/material/CssBaseline'; import { UnifiedTheme } from './types'; +const generateV4ClassName = createGenerateClassName({ + seed: 'm4', +}); +const generateV5ClassName = createGenerateClassName({ + seed: 'm5', +}); + /** * Props for {@link UnifiedThemeProvider}. * @@ -46,28 +59,42 @@ export interface UnifiedThemeProviderProps { export function UnifiedThemeProvider( props: UnifiedThemeProviderProps, ): JSX.Element { - const { children, theme, noCssBaseline } = props; + const { children, theme, noCssBaseline = false } = props; - let result = noCssBaseline ? ( - <>{children} - ) : ( + const v4Theme = theme.getTheme('v4'); + const v5Theme = theme.getTheme('v5'); + + let cssBaseline: JSX.Element | undefined = undefined; + if (!noCssBaseline) { + if (v5Theme) { + cssBaseline = ; + } else if (v4Theme) { + cssBaseline = ; + } + } + + let result = ( <> - + {cssBaseline} {children} ); - const v4Theme = theme.getTheme('v4'); if (v4Theme) { - result = {result}; + result = ( + + {result} + + ); } - const v5Theme = theme.getTheme('v5'); if (v5Theme) { result = ( - - {result} - + + + {result} + + ); }