Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/hoc/asDialog.tsx
7458 views
1
import React, { useState } from 'react';
2
import { Dialog, DialogProps, DialogWrapperContext, WrapperProps } from '@/components/elements/dialog';
3
4
function asDialog(
5
initialProps?: WrapperProps
6
// eslint-disable-next-line @typescript-eslint/ban-types
7
): <P extends {}>(C: React.ComponentType<P>) => React.FunctionComponent<P & DialogProps> {
8
return function (Component) {
9
return function ({ open, onClose, ...rest }) {
10
const [props, setProps] = useState<WrapperProps>(initialProps || {});
11
12
return (
13
<DialogWrapperContext.Provider value={{ props, setProps, close: onClose }}>
14
<Dialog {...props} open={open} onClose={onClose}>
15
<Component {...(rest as React.ComponentProps<typeof Component>)} />
16
</Dialog>
17
</DialogWrapperContext.Provider>
18
);
19
};
20
};
21
}
22
23
export default asDialog;
24
25