Yuki Takei 3 лет назад
Родитель
Сommit
1e5e9049c6
1 измененных файлов с 13 добавлено и 0 удалено
  1. 13 0
      packages/app/src/components/Theme/utils/ThemeInjector.tsx

+ 13 - 0
packages/app/src/components/Theme/utils/ThemeInjector.tsx

@@ -1,6 +1,8 @@
 
 import React from 'react';
 
+import { useIsomorphicLayoutEffect } from 'usehooks-ts';
+
 type Props = {
   children: JSX.Element,
   className: string,
@@ -9,6 +11,17 @@ type Props = {
 
 export const ThemeInjector = ({ children, className: themeClassName, bgImageNode }: Props): JSX.Element => {
   const className = `${children.props.className ?? ''} ${themeClassName}`;
+
+  // add class name to <body>
+  useIsomorphicLayoutEffect(() => {
+    document.body.classList.add(themeClassName);
+
+    // clean up
+    return () => {
+      document.body.classList.remove(themeClassName);
+    };
+  });
+
   return React.cloneElement(children, { className }, [
     <div key="grw-bg-image-wrapper" className="grw-bg-image-wrapper">{bgImageNode}</div>,
     children.props.children,