
Research
/Security News
60 Malicious Ruby Gems Used in Targeted Credential Theft Campaign
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
react-popup-manager
Advanced tools
Manage react popups, Modals, Lightboxes, Notifications, etc. easily
Manage react popups, Modals, Lightboxes, Notifications, etc. easily.
An agnostic react provider that lets you handle opening and closing popups separately from your Component render
function.
isOpen
stateComponent
should be written.An example of how using this library will simplify your code
The Old Way | The react-popup-manager Way |
---|---|
npm install react-popup-manager
# or
yarn add react-popup-manager
import React from 'react';
import { PopupProvider, usePopupManager } from 'react-popup-manager';
import Modal from 'any-modal-library';
// Your modal component
const MyModal = ({ isOpen, onClose }) => (
<Modal isOpen={isOpen} >
<h1>My Modal</h1>
<button onClick={() => onClose({ success: true })}>
Close
</button>
</Modal>
);
// Component that uses the modal
const MyComponent = () => {
const popupManager = usePopupManager();
const handleOpenModal = async () => {
const { response } = popupManager.open(MyModal);
const result = await response;
console.log(result); // { success: true }
};
return (
<div>
<button onClick={handleOpenModal}>Open Modal</button>
</div>
);
};
// Root component with provider
const App = () => (
<PopupProvider>
<MyComponent />
</PopupProvider>
);
export default App;
import React, { useState } from 'react';
import { usePopupManager } from 'react-popup-manager';
import Modal from 'any-modal-library';
const ConfirmationModal = ({ isOpen, onClose, message }) => (
<Modal isOpen={isOpen} >
<h2>{message}</h2>
<button onClick={() => onClose({ confirmed: true })}>Yes</button>
<button onClick={() => onClose({ confirmed: false })}>No</button>
</Modal>
);
const TodoList = () => {
const [todos, setTodos] = useState(['Task 1', 'Task 2']);
const popupManager = usePopupManager();
const handleDeleteTodo = async (index) => {
const { response } = popupManager.open(ConfirmationModal, {
message: 'Are you sure you want to delete this task?'
});
const result = await response;
if (result.confirmed) {
setTodos(todos.filter((_, i) => i !== index));
}
};
return (
<ul>
{todos.map((todo, index) => (
<li key={index}>
{todo}
<button onClick={() => handleDeleteTodo(index)}>Delete</button>
</li>
))}
</ul>
);
};
export default TodoList;
Returns the popup manager instance with methods to control popups.
const popupManager = usePopupManager();
A React context provider that should wrap your application.
<PopupProvider>
<App />
</PopupProvider>
Opens a popup and renders the popup component.
Parameters:
componentClass
: Component to renderpopupProps
(optional): Props passed to the popup component
onClose
(deprecated): Legacy callback method, use response
insteadNote:
isOpen
prop is not allowed and will be managed internally
Returns:
{
close: (...args: any[]) => void; // Closes the popup
unmount: () => void; // Removes popup from DOM
response: Promise<any>; // Resolves when popup closes
}
Response Resolution:
The response
promise resolves with:
// In your modal:
onClose({ data: 'success' });
// In your component:
const { response } = popupManager.open(MyModal);
const result = await response;
console.log(result); // { data: 'success' }
Closes all open popups.
const MyComponent = () => {
const popupManager = usePopupManager();
const handleOpenModal = () => {
popupManager.open(MyModal, {
onClose: (result) => console.log(result)
});
};
};
const MyComponent = () => {
const popupManager = usePopupManager();
const handleOpenModal = async () => {
const { response } = popupManager.open(MyModal);
const result = await response;
console.log(result);
};
};
MIT
FAQs
Manage react popups, Modals, Lightboxes, Notifications, etc. easily
The npm package react-popup-manager receives a total of 251 weekly downloads. As such, react-popup-manager popularity was classified as not popular.
We found that react-popup-manager demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 11 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.
Research
/Security News
Two npm packages masquerading as WhatsApp developer libraries include a kill switch that deletes all files if the phone number isn’t whitelisted.