Git Product home page Git Product logo

react-browser-notifications's Introduction

react-browser-notifications

React component for the Javascript Notifications API. The Notifications API allows web pages to control the display of system notifications to the end user. These are outside the top-level browsing context viewport, so therefore can be displayed even when the user has switched tabs or moved to a different app. This component is supported in modern web browsers such as Chrome, Safari, Firefox, Opera, and Edge.

Demo

Live Demo

Installation

Using npm:

npm install --save react-browser-notifications

Usage

import React from 'react';
import ReactNotifications from 'react-browser-notifications';

class Example extends React.Component {
  constructor() {
    super();
    this.showNotifications = this.showNotifications.bind(this);
    this.handleClick = this.handleClick.bind(this);
  }

  showNotifications() {
    // If the Notifications API is supported by the browser
    // then show the notification
    if(this.n.supported()) this.n.show();
  }

  handleClick(event) {
    // Do something here such as
    // console.log("Notification Clicked") OR
    // window.focus() OR
    // window.open("http://www.google.com")

    // Lastly, Close the notification
    this.n.close(event.target.tag);
  }

  render() {
    return (
      <div>

        <ReactNotifications
          onRef={ref => (this.n = ref)} // Required
          title="Hey There!" // Required
          body="This is the body"
          icon="icon.png"
          tag="abcdef"
          timeout="2000"
          onClick={event => this.handleClick(event)}
        />

        <button onClick={this.showNotifications}>
          Notify Me!
        </button>

      </div>
    )
  }
}

Methods

Once you have the reference of ReactNotifications by including the onRef={ref => (this.n = ref)} prop, you can call the below methods

// Returns true if the Notifications API is supported by the browser
this.n.supported()

// Triggers the browser notification
this.n.show()

// Close the notification, which is ID'ed by the tag prop
this.n.close(tag)

Properties

The ReactNotifications component accepts the following props

Name Type Req/Opt Description
onRef function Required This is required to reference the ReactNotifications component. Recommended: onRef={ref => (this.n = ref)}, where n is any variable name
title string Required Title of the notification
body string Optional Text to display in the body of the notification
icon string Optional Link to image to be displayed as the icon
tag string Optional Unique identifier for the notification. If this is not provided as a prop, an unique shortid is automatically generated for the notification
timeout string Optional Indicates, in milliseconds, the duration for which the notification will remain displayed, if less than the default timeout. Default timeout is dependent on the browser (typically 4s or 5s). Maximum duration is the default timeout
interaction boolean Optional Only available in Chrome. Setting this to true makes the notification remain displayed until the user interacts with the notification (clicks the Close button). timeout overrides interaction if both props are provided
onClick function Optional Fired when the notification is clicked

Browser Support

For up-to-date details on browser compatibility, please visit caniuse

License

MIT

Credits

Dependency: Push.js by Nickersoft

react-browser-notifications's People

Contributors

knxyzkn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

react-browser-notifications's Issues

Set Custom Css

How to custom css in notification?
&
how to set icon using react?
for example:
my icon in project is:
const LogoNotif = require('../statics/img/LogoN.svg');
& my code is:
<ReactNotifications
style={{backgroundColor:'yellow'}}
onRef={ref => (this.n = ref)} // Required
title="کاربر گرامی" // Required
body="شما یک تماس دریافتی دارید."
icon="LogoNotif"
tag="ringing"
onClick={event => this.handleClick(event)}
/>
But don't show icon....

unsupported MIME type

Hello,
first this a very cool project. But for me the component dose not seem to work. When i implement the component like in the example it dose not work. Every time i click notify me the following error is thrown:

The script has an unsupported MIME type ('text/html').
Uncaught (in promise) DOMException: Failed to register a ServiceWorker for scope ('http://localhost:5000/') with script ('http://localhost:5000/serviceWorker.min.js'): The script has an unsupported MIME type ('text/html').
Bildschirmfoto 2021-04-15 um 22 50 12

FYI:
Node: v15.11.0
React: ^16.14.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.