1.1.0 • Published 4 years ago

@alexseitsinger/react-notifications v1.1.0

Weekly downloads
-
License
BSD-2-Clause
Repository
github
Last release
4 years ago

Notifications

Render notification message at the top level of your DOM, from anywhere in your app.

Installation

yarn add @alexseitsinger/react-notifications

Exports

NotificationsProvider

Add a DOM element at the root of your app (at the bottom). Each notification rendered will be placed within this container. for each provided notification to be rendered within.

Props
NameDescriptionDefaultRequired?
displayIntervalThe time(ms) to show each notification before removing the oldest.undefinedyes
renderNotificationInvoked to render each notification.undefinedyes
Example
// In app root
import { NotificationsProvider } from "@alexseitsinger/react-notifications"

// Re-use a render method for each notification.
// Use this to render each notification with the same template.
const renderNotification = (element) => (
  <div>{element}</div>
)

// Add the provider to the app root. It will add a mount point into the DOM for the notifications to render within.
const App = () => (
  <NotificationsProvider renderNotification={renderNotification} displayInterval={3000}>
    <Router>
      <Route path={"/"} exact component={HomePage} />
    </Router>
  </NotificationsProvider>
)

withNotifications

HOC that provides notifications props to a component.

Notification Props Provided:
NameDescription
NotificationMessageComponent used to render notification messages.
createNotificationMessageFunction to create notification messages. (Useful for button callback, etc.)
clearCachedNotificationsClears the cached notification names. (Setting isForced to true ignores this cache)
clearNotificationsRemoves all the currently renderd notifications.

NotificationMessage (via withNotifications)

Component used to create new notification messages. NOTE: isForced is automatically set to false for this to prevent render loops.

Props
NameDescriptionDeafaultRequired?
notificationNameThe unique name of the notification.undefinedyes
isRepeatedShow multiple copies of the same messagefalseno
childrenThe content to render as the notificationundefinedyes
Example
import { withNotifications } from "@alexseitsinger/react-notifications"

const HomePage = withNotifications(({ NotificationMessage }) => (
  <div id="homePage">
    <div> Some normal content</div>
    <NotificationMessage notificationName={"home-page-render-notification"} isRepeated={false}>
      This notification gets displayed once.
    </NotificationMessage>
  </div>
))

createNotificationMessage (via withNotifications)

Function used to create a new notification message.

Props
NameDescriptionDefaultRequired?
notificationNameThe unique name of the notification.undefinedyes
isForcedShould the notification be shown if it already was previously?falseno
isRepeatedShow multiple copies of the same messagefalseno
onRenderInvoked to render the notification messageundefinedyes
Example
// In a page component, etc.
import { withNotifications } from "@alexseitsinger/react-notifications"

const HomePage = () => withNotifications(
  ({ createNotificationMessage, ...restProps }) => {
    return (
      <PageContainer>
        <div>Some normal page content</div>
        <button onClick={() => {
          createNotificationMessage({
            notificationName: "on-click-success-notification-1",
            onRender: () => <div>You did it!</div>,
            isForced: true,
            isRepeated: false,
          })
        }}>
          Click to do action
        </button>
      </PageContainer>
    )
  }
)