mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 07:49:41 +02:00
refactor(ui/modals): replace bootbox with react solution [EE-4541] (#8010)
This commit is contained in:
parent
392c7f74b8
commit
e66dea44e3
111 changed files with 1330 additions and 1562 deletions
29
app/react/components/modals/open-modal.tsx
Normal file
29
app/react/components/modals/open-modal.tsx
Normal file
|
@ -0,0 +1,29 @@
|
|||
import { ComponentType } from 'react';
|
||||
import { render, unmountComponentAtNode } from 'react-dom';
|
||||
|
||||
import '@reach/dialog/styles.css';
|
||||
import { OnSubmit } from './Modal/types';
|
||||
|
||||
let counter = 0;
|
||||
export async function openModal<TProps, TResult>(
|
||||
Modal: ComponentType<{ onSubmit: OnSubmit<TResult> } & TProps>,
|
||||
props: TProps = {} as TProps
|
||||
) {
|
||||
const modal = document.createElement('div');
|
||||
counter += 1;
|
||||
modal.id = `dialog-${counter}`;
|
||||
document.body.appendChild(modal);
|
||||
|
||||
const result = await new Promise<TResult | undefined>((resolve) => {
|
||||
render(
|
||||
// eslint-disable-next-line react/jsx-props-no-spreading
|
||||
<Modal {...props} onSubmit={(result) => resolve(result)} />,
|
||||
modal
|
||||
);
|
||||
});
|
||||
|
||||
unmountComponentAtNode(modal);
|
||||
document.body.removeChild(modal);
|
||||
|
||||
return result;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue