Notification

    With Notification component you can show required messages that looks like Push (or Local) system notifications.

    Notification App Methods

    Let's look at related App methods to work with Notification:

    app.notification.create(parameters)- create Notification instance

    • parameters - object. Object with notification parameters

    Method returns created Notification's instance

    app.notification.destroy(el)- destroy Notification instance

    • el - HTMLElement or string (with CSS Selector) or object. Notification element or Notification instance to destroy.

    app.notification.get(el)- get Notification instance by HTML element

    • el - HTMLElement or string (with CSS Selector). Notification element.

    Method returns Notification's instance

    app.notification.open(el, animate)- opens Notification

    • el - HTMLElement or string (with CSS Selector). Notification element to open.
    • animate - boolean. Open Notification with animation.

    Method returns Notification's instance

    app.notification.close(el, animate)- closes Notification

    • el - HTMLElement or string (with CSS Selector). Notification element to close.
    • animate - boolean. Close Notification with animation.

    Method returns Notification's instance

    Notification Parameters

    Now let's look at list of available parameters we need to create Notification:

    Parameter Type Default Description
    el HTMLElement Notification element. Can be useful if you already have Notification element in your HTML and want to create new instance using this element
    icon string Notification icon HTML layout, e.g. <i class="f7-icons">home</i> or image <img src="path/to/icon.png">
    title string Notification title
    titleRightText string Additional text on the right side of title
    subtitle string Notification subtitle
    text string Notification inner text
    closeButton boolean false Adds notification close button
    closeTimeout number Timeout delay (in ms) to close notification automatically
    closeOnClick boolean false If enabled, notification will be closed on notification click
    swipeToClose boolean true If enabled, notification can be closed by swipe gesture
    cssClass string Additional css class to add
    render function Custom function to render Notification. Must return notification html
    on object Object with events handlers. For example:
    var notification = app.notification.create({
      title: 'John Doe'
      text: 'Hello, how are you?',
      on: {
        opened: function () {
          console.log('Notification opened')
        }
      }
    })

    Note that all following parameters can be used in global app parameters under notification property to set defaults for all notifications. For example:

    var app = new Framework7({
      notification: {
        title: 'My App',
        closeTimeout: 3000,
      }
    });

    Notification Methods & Properties

    So to create Notification we have to call:

    var notification = app.notification.create({ /* parameters */ })

    After that we have its initialized instance (like notification variable in example above) with useful methods and properties:

    Properties
    notification.app Link to global app instance
    notification.el Notification HTML element
    notification.$el Dom7 instance with notification HTML element
    notification.params Notification parameters
    Methods
    notification.open() Open notification
    notification.close() Close notification
    notification.on(event, handler) Add event handler
    notification.once(event, handler) Add event handler that will be removed after it was fired
    notification.off(event, handler) Remove event handler
    notification.off(event) Remove all handlers for specified event
    notification.emit(event, ...args) Fire event on instance

    Notification Events

    Notification will fire the following DOM events on notification element and events on app and notification instance:

    DOM Events

    Event Target Description
    notification:open Notification Element<div class="notification"> Event will be triggered when Notification starts its opening animation
    notification:opened Notification Element<div class="notification"> Event will be triggered after Notification completes its opening animation
    notification:close Notification Element<div class="notification"> Event will be triggered when Notification starts its closing animation
    notification:closed Notification Element<div class="notification"> Event will be triggered after Notification completes its closing animation

    App and Notification Instance Events

    Notification instance emits events on both self instance and app instance. App instance events has same names prefixed with notification.

    Event Arguments Target Description
    click notification notification Event will be triggered when user clicks on Notification element. As an argument event handler receives notification instance
    notificationClick notification app
    open notification notification Event will be triggered when Notification starts its opening animation. As an argument event handler receives notification instance
    notificationOpen notification app
    opened notification notification Event will be triggered after Notification completes its opening animation. As an argument event handler receives notification instance
    notificationOpened notification app
    close notification notification Event will be triggered when Notification starts its closing animation. As an argument event handler receives notification instance
    notificationClose notification app
    closed notification notification Event will be triggered after Notification completes its closing animation. As an argument event handler receives notification instance
    notificationClosed notification app
    beforeDestroy notification notification Event will be triggered right before Notification instance will be destroyed. As an argument event handler receives notification instance
    notificationBeforeDestroy notification app

    Examples

    <div class="block">
      <p>
        <a class="button button-raised open-full" href="#">Full-layout notification</a>
      </p>
      <p>
        <a class="button button-raised open-with-button" href="#">With close button</a>
      </p>
      <p>
        <a class="button button-raised open-click-to-close" href="#">Click to close</a>
      </p>
      <p>
        <a class="button button-raised open-callback-on-close" href="#">Callback on close</a>
      </p>
    </div>
    var app = new Framework7();
    
    var $$ = Dom7;
    
    // Create full-layout notification
    var notificationFull = app.notification.create({
      icon: '<i class="icon demo-icon">7</i>',
      title: 'Framework7',
      titleRightText: 'now',
      subtitle: 'This is a subtitle',
      text: 'This is a simple notification message',
      closeTimeout: 3000,
    });
    
    // Create notification with close button
    var notificationWithButton = app.notification.create({
      icon: '<i class="icon demo-icon">7</i>',
      title: 'Framework7',
      subtitle: 'Notification with close button',
      text: 'Click (x) button to close me',
      closeButton: true,
    });
    
    // Create notification with click to close
    var notificationClickToClose = app.notification.create({
      icon: '<i class="icon demo-icon">7</i>',
      title: 'Framework7',
      titleRightText: 'now',
      subtitle: 'Notification with close on click',
      text: 'Click me to close',
      closeOnClick: true,
    })
    
    // With callback on close
    var notificationCallbackOnClose = app.notification.create({
      icon: '<i class="icon demo-icon">7</i>',
      title: 'Framework7',
      titleRightText: 'now',
      subtitle: 'Notification with close on click',
      text: 'Click me to close',
      closeOnClick: true,
      on: {
        close: function () {
          app.dialog.alert('Notification closed');
        },
      },
    });
    
    // Open Notifications
    $$('.open-full').on('click', function () {
      notificationFull.open();
    });
    $$('.open-with-button').on('click', function () {
      notificationWithButton.open();
    });
    $$('.open-click-to-close').on('click', function () {
      notificationClickToClose.open();
    });
    $$('.open-callback-on-close').on('click', function () {
      notificationCallbackOnClose.open();
    });