通知
通知コンポーネントを使うと、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を作成するために必要な、利用可能なパラメータのリストを見てみましょう。
Parameter | Type | Default | Description |
---|---|---|---|
el | HTMLElement string | Notification要素。すでにHTML内にNotification要素があり、この要素を使って新しいインスタンスを作成したい場合に便利です。 | |
icon | string | 通知アイコンのHTMLレイアウト、例えば<i class="f7-icons">house</i> や画像<img src="path/to/icon.png" /> 。 | |
title | string | 通知タイトル | |
titleRightText | string | タイトルの右側に表示される追加テキスト | |
subtitle | string | 通知のサブタイトル | |
text | string | 通知の内側のテキスト | |
closeButton | boolean | false | 通知を閉じるボタンを追加 |
closeTimeout | number | 通知を自動的に閉じるまでのタイムアウト時間(単位:ミリ秒 | |
closeOnClick | boolean | false | 有効にすると、通知をクリックしたときに通知が閉じられます。 |
swipeToClose | boolean | true | 有効にすると、スワイプジェスチャーで通知を閉じることができます。 |
cssClass | string | 追加するcssクラス | |
render | function | 通知をレンダリングするカスタム関数。通知のhtmlを返さなければなりません。 | |
on | object | イベント・ハンドラを持つオブジェクト。例を示します。
|
以下のすべてのパラメータは、アプリのグローバルパラメータの 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イベント
Event | Target | Description |
---|---|---|
notification:open | Notification Element<div class="notification"> | 通知がオープニング・アニメーションを開始すると、イベントが発生します。 |
notification:opened | Notification Element<div class="notification"> | イベントは、通知がそのオープニング・アニメーションを完了した後に発生します。 |
notification:close | Notification Element<div class="notification"> | イベントは、通知がそのクロージング・アニメーションを開始するときにトリガされます。 |
notification:closed | Notification Element<div class="notification"> | イベントは、通知がそのクロージング・アニメーションを完了した後にトリガされます。 |
アプリとNotificationインスタンスのイベント
通知インスタンスは、セルフインスタンスとアプリインスタンスの両方でイベントを発行します。アプリインスタンスのイベントは同じ名前で、プレフィックスとして notification
が付きます。
Event | Arguments | Target | Description |
---|---|---|---|
click | notification | notification | ユーザーが Notification 要素をクリックするとイベントが発生します。引数として、イベントハンドラはNotificationインスタンスを受け取ります。 |
notificationClick | notification | app | |
open | notification | notification | イベントは、Notification がそのオープニングアニメーションを開始するときにトリガーされます。イベントハンドラが通知インスタンスを受け取る引数として |
notificationOpen | notification | app | |
opened | notification | notification | イベントは、Notification がそのオープニング・アニメーションを完了した後に発生します。引数のイベントハンドラが通知インスタンスを受け取ると |
notificationOpened | notification | app | |
close | notification | notification | イベントは、Notification がそのクロージング・アニメーションを開始するときにトリガされます。引数のイベントハンドラが通知インスタンスを受け取ると |
notificationClose | notification | app | |
closed | notification | notification | イベントは、Notification が閉じるアニメーションを完了した後に発生します。引数のイベントハンドラが通知インスタンスを受け取ると |
notificationClosed | notification | app | |
beforeDestroy | notification | notification | イベントは、Notification インスタンスが破棄される直前に発生します。引数のイベントハンドラが通知インスタンスを受け取ると |
notificationBeforeDestroy | notification | app |
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>