diff --git a/platform/ui/src/contextProviders/ModalComponent.jsx b/platform/ui/src/contextProviders/ModalComponent.jsx new file mode 100644 index 000000000..b3b6602a7 --- /dev/null +++ b/platform/ui/src/contextProviders/ModalComponent.jsx @@ -0,0 +1,36 @@ +import PropTypes from 'prop-types'; +import React from 'react'; + +const ModalComponent = ({ + content, + contentProps, + shouldCloseOnEsc, + isOpen, + closeButton, + title, + customClassName, +}) => { + return <>; +}; + +ModalComponent.defaultProps = { + content: null, + contentProps: null, + shouldCloseOnEsc: false, + isOpen: true, + closeButton: true, + title: null, + customClassName: '', +}; + +ModalComponent.propTypes = { + content: PropTypes.node, + contentProps: PropTypes.object, + shouldCloseOnEsc: PropTypes.bool, + isOpen: PropTypes.bool, + closeButton: PropTypes.bool, + title: PropTypes.string, + customClassName: PropTypes.string, +}; + +export default ModalComponent; diff --git a/platform/ui/src/contextProviders/ModalProvider.js b/platform/ui/src/contextProviders/ModalProvider.js index 8d43b363d..74a53c02f 100644 --- a/platform/ui/src/contextProviders/ModalProvider.js +++ b/platform/ui/src/contextProviders/ModalProvider.js @@ -115,15 +115,18 @@ ModalProvider.defaultProps = { }; ModalProvider.propTypes = { + /** Children that will be wrapped with Modal Context */ children: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.node), PropTypes.node, ]).isRequired, + /** Modal component */ modal: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.node), PropTypes.node, PropTypes.func, ]).isRequired, + /** service to be update once modal provider is instanciated */ service: PropTypes.shape({ setServiceImplementation: PropTypes.func, }), diff --git a/platform/ui/src/contextProviders/ModalProvider.mdx b/platform/ui/src/contextProviders/ModalProvider.mdx new file mode 100644 index 000000000..867327893 --- /dev/null +++ b/platform/ui/src/contextProviders/ModalProvider.mdx @@ -0,0 +1,86 @@ +--- +name: ModalProvider +menu: Context Providers +route: contextProviders/modalProvider +--- + +import { Props } from 'docz'; +import { ModalProvider } from '@ohif/ui'; +import ModalComponent from './ModalComponent.jsx'; + +# Modal Context Provider + +This is a context provider that allow the application to share the modal +component across all application. + +## ModalProvider + +Properties: + + + +Usage example: + +```javascript +import { ModalProvider } from '@ohif/ui'; +import YourModalComponent from 'your-modal-component'; + +const App = () => { + return ( + + /** You app content */ + ; + ) +}; + +export default App; +``` + +## useModal + +Used for React Functional Components. Should be used in the body of the +functional component to get access to the context together with the `show/hide` +functions. + +Usage example: + +```javascript +import { withModal } from '@ohif/ui'; + +const SampleComponent = () => { + const { show, hide } = useModal(); + + return; +}; + +export default SampleComponent; +``` + +## withModal + +Used for React Class Components. This function show receive a Component as a +property and this component will have access to the context through its own +properties. + +Usage example: + +```javascript +import { withModal } from '@ohif/ui'; +import React from 'react'; + +class SampleComponent extends React.Component { + const { show, hide } = props.modal; + + render() { + return; + } +} + +export default withModal(SampleComponent); +``` + +## Modal Properties + +The Modal Properties that can be override are: + +