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