dev-utils,techdocs: add conditional support for React 18

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-10-13 15:31:05 +02:00
parent f347782b9d
commit 9468a67b92
13 changed files with 113 additions and 25 deletions
+2 -2
View File
@@ -47,8 +47,8 @@
"react-use": "^17.2.4"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0",
"react-dom": "^16.13.1 || ^17.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
+16 -2
View File
@@ -45,9 +45,19 @@ import {
import { Box } from '@material-ui/core';
import BookmarkIcon from '@material-ui/icons/Bookmark';
import React, { ComponentType, ReactNode, PropsWithChildren } from 'react';
import ReactDOM from 'react-dom';
import { createRoutesFromChildren, Route } from 'react-router-dom';
import { SidebarThemeSwitcher } from './SidebarThemeSwitcher';
import 'react-dom';
let ReactDOM:
| typeof import('react-dom')
// TODO: replace with import('react-dom/client') when repo is migrated to 18
| { createRoot(el: HTMLElement): { render(el: JSX.Element): void } };
if (process.env.HAS_REACT_DOM_CLIENT) {
ReactDOM = require('react-dom/client');
} else {
ReactDOM = require('react-dom');
}
export function isReactRouterBeta(): boolean {
const [obj] = createRoutesFromChildren(<Route index element={<div />} />);
@@ -235,7 +245,11 @@ export class DevAppBuilder {
window.location.pathname = this.defaultPage;
}
ReactDOM.render(<DevApp />, document.getElementById('root'));
if ('createRoot' in ReactDOM) {
ReactDOM.createRoot(document.getElementById('root')!).render(<DevApp />);
} else {
ReactDOM.render(<DevApp />, document.getElementById('root'));
}
}
}