UNPKG

@openshift-console/dynamic-plugin-sdk

Version:

Provides core APIs, types and utilities used by dynamic plugins at runtime.

20 lines (19 loc) 894 B
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)); };