@openshift-console/dynamic-plugin-sdk
Version:
Provides core APIs, types and utilities used by dynamic plugins at runtime.
20 lines (19 loc) • 894 B
JavaScript
import * as React from 'react';
export const ModalContext = React.createContext({
launchModal: () => { },
closeModal: () => { },
});
export const ModalProvider = ({ children }) => {
const [isOpen, setOpen] = React.useState(false);
const [Component, setComponent] = React.useState();
const [componentProps, setComponentProps] = React.useState({});
const launchModal = React.useCallback((component, compProps) => {
setComponent(() => component);
setComponentProps(compProps);
setOpen(true);
}, [setOpen, setComponent, setComponentProps]);
const closeModal = React.useCallback(() => setOpen(false), [setOpen]);
return (React.createElement(ModalContext.Provider, { value: { launchModal, closeModal } },
isOpen && !!Component && React.createElement(Component, { ...componentProps, closeModal: closeModal }),
children));
};