1.0.9 • Published 11 months ago
@saimin/react-modal-manager v1.0.9
Centralized React Modal Manager
This is a customizable modal component library for React.js. It provides a flexible API to manage and display modals in your application.
Installation
To install the package, use npm:
npm install @saimin/react-modal-manager
Demo
Usage
Import the Modal Provider
Wrap your application with the ModalProvider component to manage modals:
import React from 'react';
import ReactDOM from 'react-dom';
import { ModalProvider } from '@saimin/react-modal-manager';
const App = () => {
return (
<ModalProvider>
{/* Your application components */}
</ModalProvider>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
Opening a Modal
Use the useModal hook to access modal management functions. To open a modal, call the open method with a unique ID and modal properties:
import React from 'react';
import { useModal } from '@saimin/react-modal-manager';
const MyComponent = () => {
const { open } = useModal();
const openMyModal = () => {
open('my-modal', {
content: <div>My Modal Content</div>,
backdropOpacity: 0.5,
fullscreen: false,
position: 'center',
animationType: 'fade',
});
};
return <button onClick={openMyModal}>Open Modal</button>;
};
export default MyComponent;
Closing a Modal
To close a specific modal, use the close method with the modal ID:
import React from 'react';
import { useModal } from '@saimin/react-modal-manager';
const MyComponent = () => {
const { close } = useModal();
const closeMyModal = () => {
close('my-modal');
};
return <button onClick={closeMyModal}>Close Modal</button>;
};
export default MyComponent;
You can also close all open modals at once:
const { closeAll } = useModal();
closeAll();
Applying props to all modals
To apply props to all modal, add config prop to ModalProvider.
<ModalProvider config={{
animationType: "zoom"
}}>
...children nodes
</ModalProvider>
Modal Props
The ModalProps object allows you to customize the appearance and behavior of your modal. Here are the available options:
ModalProps
Prop | Type | Description |
---|---|---|
content | ReactNode | The content to be displayed inside the modal. |
backdropOpacity | number | The opacity of the backdrop. |
backdropColor | string | The color of the backdrop. |
backdropPadding | string | number | Padding around the modal content. |
fullscreen | boolean | Whether the modal should cover the entire screen. |
position | center | center-left | center-right | top-center | top-left | top-right | bottom-center | bottom-left | bottom-right | Position of the modal on the screen. |
hideOnClickBackDrop | boolean | Whether to close the modal when clicking on the backdrop. |
animationType | fade | zoom | slide-from-top | slide-from-bottom | slide-from-right | slide-from-left | The animation type for modal entrance and exit. |
Example
Here is a complete example of using the modal component:
import React from 'react';
import ReactDOM from 'react-dom';
import { ModalProvider, useModal } from '@saimin/react-modal-manager';
const MyApp = () => {
const { open } = useModal();
const showModal = () => {
open('example-modal', {
content: <div>Example Modal Content</div>,
fullscreen: false,
animationType: 'zoom',
});
};
return <button onClick={showModal}>Show Modal</button>;
};
ReactDOM.render(
<ModalProvider>
<MyApp />
</ModalProvider>,
document.getElementById('root')
);