スポンサー
Support Framework7

通知

    通知コンポーネントを使うと、Push(またはLocal)システム通知のように必要なメッセージを表示できます。

    通知アプリのメソッド

    Notificationに関連するAppメソッドを見てみましょう。

    app.notification.create(parameters)- 通知インスタンスの作成

    • parameters - object. 通知パラメータを持つオブジェクト

    メソッドは作成されたNotificationのインスタンスを返します

    app.notification.destroy(el)- 通知インスタンスの破棄

    • el - HTMLElementまたはstring(CSSセレクタ付き)またはobject。破棄するNotification要素またはNotificationインスタンスです。

    app.notification.get(el)- HTML要素による通知インスタンスの取得

    • el - HTMLElement または string (with CSS Selector). Notificationの要素です。

    メソッドは通知のインスタンスを返します。

    app.notification.open(el, animate)- 通知を開く

    • el - HTMLElement または string (with CSS Selector). 開くNotificationの要素。
    • animate - boolean:アニメーションで通知を開きます。アニメーションで通知を開きます。

    メソッドはNotificationのインスタンスを返します。

    app.notification.close(el, animate)- 通知を閉じる

    • el - HTMLElementまたはstring(CSSセレクタ付き)。閉鎖するNotification要素。
    • animate - boolean:閉じる通知要素。アニメーションで通知を閉じます。

    メソッドはNotificationのインスタンスを返します。

    通知パラメータ

    それでは、Notificationを作成するために必要な、利用可能なパラメータのリストを見てみましょう。

    ParameterTypeDefaultDescription
    elHTMLElement
    string
    Notification要素。すでにHTML内にNotification要素があり、この要素を使って新しいインスタンスを作成したい場合に便利です。
    iconstring通知アイコンのHTMLレイアウト、例えば<i class="f7-icons">house</i>や画像<img src="path/to/icon.png" />
    titlestring通知タイトル
    titleRightTextstringタイトルの右側に表示される追加テキスト
    subtitlestring通知のサブタイトル
    textstring通知の内側のテキスト
    closeButtonbooleanfalse通知を閉じるボタンを追加
    closeTimeoutnumber通知を自動的に閉じるまでのタイムアウト時間(単位:ミリ秒
    closeOnClickbooleanfalse有効にすると、通知をクリックしたときに通知が閉じられます。
    swipeToClosebooleantrue有効にすると、スワイプジェスチャーで通知を閉じることができます。
    cssClassstring追加するcssクラス
    renderfunction通知をレンダリングするカスタム関数。通知のhtmlを返さなければなりません。
    onobject

    イベント・ハンドラを持つオブジェクト。例を示します。

    var notification = app.notification.create({
      title: 'John Doe',
      text: 'Hello, how are you?',
      on: {
        opened: function () {
          console.log('Notification opened')
        }
      }
    })

    以下のすべてのパラメータは、アプリのグローバルパラメータの notification プロパティで使用でき、すべての通知のデフォルトを設定できることに注意してください。例えば、以下のようになります。

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

    通知のメソッドとプロパティ

    通知を作成するためには、呼び出しが必要です。

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

    その後、有用なメソッドとプロパティを持つ、初期化されたインスタンス(上記の例では、notification変数のようなもの)を取得します。

    Properties
    notification.appグローバルアプリのインスタンスへのリンク
    notification.el通知用のHTML要素
    notification.$el通知用のHTML要素を持つDom7インスタンス
    notification.params通知パラメータ
    Methods
    notification.open()通知を開く
    notification.close()通知を閉じる
    notification.on(event, handler)イベントハンドラの追加
    notification.once(event, handler)発射された後に削除されるイベントハンドラを追加する
    notification.off(event, handler)イベントハンドラの削除
    notification.off(event)指定されたイベントのハンドラをすべて削除する
    notification.emit(event, ...args)インスタンスでのイベント発生

    通知イベント

    通知では、通知要素のDOMイベント、アプリと通知インスタンスのイベントが発生します。

    DOMイベント

    EventTargetDescription
    notification:openNotification Element<div class="notification">通知がオープニング・アニメーションを開始すると、イベントが発生します。
    notification:openedNotification Element<div class="notification">イベントは、通知がそのオープニング・アニメーションを完了した後に発生します。
    notification:closeNotification Element<div class="notification">イベントは、通知がそのクロージング・アニメーションを開始するときにトリガされます。
    notification:closedNotification Element<div class="notification">イベントは、通知がそのクロージング・アニメーションを完了した後にトリガされます。

    アプリとNotificationインスタンスのイベント

    通知インスタンスは、セルフインスタンスとアプリインスタンスの両方でイベントを発行します。アプリインスタンスのイベントは同じ名前で、プレフィックスとして notification が付きます。

    EventArgumentsTargetDescription
    clicknotificationnotificationユーザーが Notification 要素をクリックするとイベントが発生します。引数として、イベントハンドラはNotificationインスタンスを受け取ります。
    notificationClicknotificationapp
    opennotificationnotificationイベントは、Notification がそのオープニングアニメーションを開始するときにトリガーされます。イベントハンドラが通知インスタンスを受け取る引数として
    notificationOpennotificationapp
    openednotificationnotificationイベントは、Notification がそのオープニング・アニメーションを完了した後に発生します。引数のイベントハンドラが通知インスタンスを受け取ると
    notificationOpenednotificationapp
    closenotificationnotificationイベントは、Notification がそのクロージング・アニメーションを開始するときにトリガされます。引数のイベントハンドラが通知インスタンスを受け取ると
    notificationClosenotificationapp
    closednotificationnotificationイベントは、Notification が閉じるアニメーションを完了した後に発生します。引数のイベントハンドラが通知インスタンスを受け取ると
    notificationClosednotificationapp
    beforeDestroynotificationnotificationイベントは、Notification インスタンスが破棄される直前に発生します。引数のイベントハンドラが通知インスタンスを受け取ると
    notificationBeforeDestroynotificationapp

    CSS Variables

    Below is the list of related CSS variables (CSS custom properties).

    :root {
      --f7-notification-max-width: 568px;
      --f7-notification-subtitle-text-transform: none;
      --f7-notification-subtitle-line-height: 1.35;
      --f7-notification-text-text-transform: none;
      --f7-notification-text-font-weight: 400;
    }
    :root .theme-dark,
    :root.theme-dark {
      --f7-notification-subtitle-color: #fff;
    }
    .ios {
      --f7-notification-margin: 8px;
      --f7-notification-padding: 10px;
      --f7-notification-border-radius: 12px;
      --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);
      --f7-notification-icon-size: 20px;
      --f7-notification-title-font-size: 13px;
      --f7-notification-title-text-transform: uppercase;
      --f7-notification-title-line-height: 1.4;
      --f7-notification-title-font-weight: 400;
      --f7-notification-title-letter-spacing: 0.02em;
      --f7-notification-title-right-font-size: 13px;
      --f7-notification-subtitle-font-size: 15px;
      --f7-notification-subtitle-font-weight: 600;
      --f7-notification-text-font-size: 15px;
      --f7-notification-text-line-height: 1.2;
      --f7-notification-bg-color: rgba(250, 250, 250, 0.95);
      --f7-notification-bg-color-rgb: 255, 255, 255;
      --f7-notification-title-color: #000;
      --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);
      --f7-notification-subtitle-color: #000;
      --f7-notification-text-color: #000;
    }
    .ios .theme-dark,
    .ios.theme-dark {
      --f7-notification-bg-color: rgba(30, 30, 30, 0.95);
      --f7-notification-bg-color-rgb: 30, 30, 30;
      --f7-notification-title-color: #fff;
      --f7-notification-text-color: #fff;
      --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);
    }
    .md {
      --f7-notification-margin: 0px;
      --f7-notification-padding: 16px;
      --f7-notification-border-radius: 0px;
      --f7-notification-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.22), 0 1px 2px rgba(0, 0, 0, 0.24);
      --f7-notification-icon-size: 16px;
      --f7-notification-title-color: var(--f7-theme-color);
      --f7-notification-title-font-size: 12px;
      --f7-notification-title-text-transform: none;
      --f7-notification-title-line-height: 1;
      --f7-notification-title-font-weight: 400;
      --f7-notification-title-right-font-size: 12px;
      --f7-notification-subtitle-font-size: 14px;
      --f7-notification-subtitle-font-weight: 400;
      --f7-notification-text-font-size: 14px;
      --f7-notification-text-line-height: 1.35;
      --f7-notification-bg-color: #fff;
      --f7-notification-title-right-color: rgba(0, 0, 0, 0.54);
      --f7-notification-subtitle-color: #212121;
      --f7-notification-text-color: rgba(0, 0, 0, 0.54);
    }
    .md .theme-dark,
    .md.theme-dark {
      --f7-notification-bg-color: #242424;
      --f7-notification-title-right-color: rgba(255, 255, 255, 0.54);
      --f7-notification-text-color: rgba(255, 255, 255, 0.54);
    }
    .aurora {
      --f7-notification-margin: 16px;
      --f7-notification-padding: 16px;
      --f7-notification-border-radius: 8px;
      --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);
      --f7-notification-icon-size: 24px;
      --f7-notification-title-font-size: 16px;
      --f7-notification-title-text-transform: none;
      --f7-notification-title-line-height: 1.4;
      --f7-notification-title-font-weight: 600;
      --f7-notification-title-letter-spacing: 0.02em;
      --f7-notification-title-right-font-size: 14px;
      --f7-notification-subtitle-font-size: 14px;
      --f7-notification-subtitle-font-weight: 600;
      --f7-notification-text-font-size: 14px;
      --f7-notification-text-line-height: 1.35;
      --f7-notification-bg-color: #fff;
      --f7-notification-title-color: #000;
      --f7-notification-title-right-color: rgba(0, 0, 0, 0.6);
      --f7-notification-subtitle-color: #000;
      --f7-notification-text-color: #000;
    }
    .aurora .theme-dark,
    .aurora.theme-dark {
      --f7-notification-bg-color: #242424;
      --f7-notification-title-color: #fff;
      --f7-notification-text-color: #fff;
      --f7-notification-title-right-color: rgba(255, 255, 255, 0.54);
    }
    

    Examples

    <template>
      <div class="page">
        <div class="navbar">
          <div class="navbar-bg"></div>
          <div class="navbar-inner">
            <div class="title">Notifications</div>
          </div>
        </div>
        <div class="page-content">
          <div class="block">
            <p><a class="button button-fill open-full" href="#">Full-layout notification</a></p>
            <p><a class="button button-fill open-with-button" href="#">With close button</a></p>
            <p><a class="button button-fill open-click-to-close" href="#">Click to close</a></p>
            <p><a class="button button-fill open-callback-on-close" href="#">Callback on close</a></p>
          </div>
        </div>
      </div>
    </template>
    <style>
      .demo-icon {
        background: #EE350F;
        color: #fff;
        border-radius: 50%;
        text-align: center;
      }
    </style>
    <script>
      export default (props, { $, $f7, $on }) => {
        $on('pageInit', () => {
          // Create full-layout notification
          var notificationFull = $f7.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 = $f7.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 = $f7.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 = $f7.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 () {
                $f7.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();
          });
        })
    
        return $render;
      }
    
    </script>