diff options
Diffstat (limited to 'src/containers/settings/ReleaseNotesWindow.tsx')
-rw-r--r-- | src/containers/settings/ReleaseNotesWindow.tsx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/containers/settings/ReleaseNotesWindow.tsx b/src/containers/settings/ReleaseNotesWindow.tsx new file mode 100644 index 000000000..3e43727d0 --- /dev/null +++ b/src/containers/settings/ReleaseNotesWindow.tsx | |||
@@ -0,0 +1,42 @@ | |||
1 | import { inject, observer } from 'mobx-react'; | ||
2 | import { Component, ReactPortal } from 'react'; | ||
3 | import ReactDOM from 'react-dom'; | ||
4 | import { Outlet } from 'react-router-dom'; | ||
5 | |||
6 | import { StoresProps } from '../../@types/ferdium-components.types'; | ||
7 | import Layout from '../../components/settings/releaseNotes/ReleaseNotesLayout'; | ||
8 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | ||
9 | |||
10 | class SettingsContainer extends Component<StoresProps> { | ||
11 | portalRoot: any; | ||
12 | |||
13 | el: HTMLDivElement; | ||
14 | |||
15 | constructor(props: StoresProps) { | ||
16 | super(props); | ||
17 | |||
18 | this.portalRoot = document.querySelector('#portalContainer'); | ||
19 | this.el = document.createElement('div'); | ||
20 | } | ||
21 | |||
22 | componentDidMount(): void { | ||
23 | this.portalRoot.append(this.el); | ||
24 | } | ||
25 | |||
26 | componentWillUnmount(): void { | ||
27 | this.el.remove(); | ||
28 | } | ||
29 | |||
30 | render(): ReactPortal { | ||
31 | return ReactDOM.createPortal( | ||
32 | <ErrorBoundary> | ||
33 | <Layout {...this.props}> | ||
34 | <Outlet /> | ||
35 | </Layout> | ||
36 | </ErrorBoundary>, | ||
37 | this.el, | ||
38 | ); | ||
39 | } | ||
40 | } | ||
41 | |||
42 | export default inject('stores', 'actions')(observer(SettingsContainer)); | ||