Path: blob/1.0-develop/resources/scripts/hoc/asDialog.tsx
7458 views
import React, { useState } from 'react';1import { Dialog, DialogProps, DialogWrapperContext, WrapperProps } from '@/components/elements/dialog';23function asDialog(4initialProps?: WrapperProps5// eslint-disable-next-line @typescript-eslint/ban-types6): <P extends {}>(C: React.ComponentType<P>) => React.FunctionComponent<P & DialogProps> {7return function (Component) {8return function ({ open, onClose, ...rest }) {9const [props, setProps] = useState<WrapperProps>(initialProps || {});1011return (12<DialogWrapperContext.Provider value={{ props, setProps, close: onClose }}>13<Dialog {...props} open={open} onClose={onClose}>14<Component {...(rest as React.ComponentProps<typeof Component>)} />15</Dialog>16</DialogWrapperContext.Provider>17);18};19};20}2122export default asDialog;232425