Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexpermyakov/simple-react-notifications
Tiny React.js notification library (1kb gzip).
https://github.com/alexpermyakov/simple-react-notifications
Last synced: about 2 months ago
JSON representation
Tiny React.js notification library (1kb gzip).
- Host: GitHub
- URL: https://github.com/alexpermyakov/simple-react-notifications
- Owner: alexpermiakov
- License: mit
- Created: 2019-07-03T19:49:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-03T10:13:15.000Z (almost 2 years ago)
- Last Synced: 2024-10-27T22:28:33.269Z (about 2 months ago)
- Language: TypeScript
- Homepage:
- Size: 3.01 MB
- Stars: 61
- Watchers: 0
- Forks: 6
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- fucking-awesome-react-components - simple-react-notifications - 🌎 [demo](alexpermyakov.github.io/simple-react-notifications/) - Tiny notification library (1kb gzip). (UI Components / Notification)
- awesome-react-components - simple-react-notifications - [demo](https://alexpermyakov.github.io/simple-react-notifications/) - Tiny notification library (1kb gzip). (UI Components / Notification)
- awesome-react-components - simple-react-notifications - [demo](https://alexpermyakov.github.io/simple-react-notifications/) - Tiny notification library (1kb gzip). (UI Components / Notification)
- awesome-react - simple-react-notifications - Tiny notification library (1kb gzip). ![](https://img.shields.io/github/stars/alexpermyakov/simple-react-notifications.svg?style=social&label=Star) (UI Components / Notification)
- awesome-react-components - simple-react-notifications - [demo](https://alexpermyakov.github.io/simple-react-notifications/) - Tiny notification library (1kb gzip). (UI Components / Notification)
- awesome-react-components - simple-react-notifications - [demo](https://alexpermyakov.github.io/simple-react-notifications/) - Tiny notification library (1kb gzip). (UI Components / Notification)
README
# Simple-React-Notifications
Tiny library (only 1kb gzip) that allows you to add notifications to your app.
We don't want to blow up our bundle size because of notifications, right?## Demo
https://alexpermyakov.github.io/simple-react-notifications/
Despite the small size, it supports:
- [Rendering success and error default notifications](#rendering-success-and-error-default-notifications)
- [Rendering user defined component](#rendering-user-defined-component)
- [Positioning](#positioning)
- [Configuring all in one place](#configuring-all-in-one-place)
- [Animation](#animation)
- [Remove notification items programmatically](#remove-notification-items-programmatically)## Installation
```
$ npm install simple-react-notifications
$ yarn add simple-react-notifications
```## Usage
### Rendering success and error default notifications
Notifier has a few built-in components for displaying an error or a successfull operation:
```javascript
import React from "react";
import notifier from "simple-react-notifications";
import "simple-react-notifications/dist/index.css";const App = () => (
{
notifier.success("Your items have been updated");
// notifier.error("Something went wrong, try again.");
}}
>
Lets render a default component
);
```### Rendering user defined component
The real power comes with rendering our own component. In this case it's not even a notification, just a view with real data:
```javascript
const RouteInfo = ({ header, onClosePanel }) => (
{header}
Bicycle 2.4 km, 8 min.
Use caution - may involve errors or sections not suited for bicycling
Use this route
);
```It completely up to us the way we add styles. We can use styled-components or whatever we like. The notify() method will just render it:
```javascript
const App = () => (
notifier({
render: ({ id, onClose }) => (
)
})
}
>
Notify with just a text message!
);
```As you can see here, render() receives onClose callback, which we have to pass inside our component in order to close the notification when user click on the button.
### Positioning
By default, all items will be positioned in the top right corner. The following values are allowed: top-right, top-center, top-left, bottom-right, bottom-center, bottom-left.
```javascript
const App = () => (
{
// notifier({
// position: "top-left"
// });notifier({
single: true, // display only the latest item
position: "top-center",
render: ({ id, onClose }) => (
)
});
}}
>
Show two of them in different places
);
```### Configuring all in one place
Instead of specifing all params again and again for each item, we can put it in one place:
```javascript
notifier.configure({
autoClose: 2000,
position: "top-center",
delay: 500,
single: false,
width: "480px"
});const App = () => (
{
notifier.success("Your items have been updated");
}}
>
Display an item with 500 ms delay. Now it is done in configure()
);
```Params in notifier function will override their default values in configure().
### Animation
First, define the css-animation somewhere in your .css file:
```css
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
```Second, specify it during the notifier() call or in configure():
```javascript
notifier.configure({
position: "top-center",
animation: {
in: "fadeIn", // try to comment it out
out: "fadeOut",
duration: 600 // overriding the default(300ms) value
}
});const App = () => (
{
notifier.success("Your items have been updated");
}}
>
Show two of them in different places
);
```You can specify only in or out params as well.
### Remove notification items programmatically
```javascript
import React from "react";
import notifier from "simple-react-notifications";notifier.configure({
render: ({ id, onClose }) => (
)
});class App extends React.Component {
id = null;render() {
return (
(this.id = notifier())}>Notify
notifier.dismiss(this.id)}>Dismiss
notifier.dismiss()}>Dismiss all
);
}
}
```