トースト
Toastは、画面にメッセージを表示することで、操作に関する簡単なフィードバックを提供します。
Toastのアプリメソッド
Toastを操作するための関連するAppメソッドを見てみましょう。
app.toast.create(parameters)- Toastインスタンスの作成
- parameters - object. Toastのパラメータを持つオブジェクト
作成されたToastのインスタンスを返すメソッド
app.toast.destroy(el)- Toastインスタンスの破棄
- el - HTMLElement または string (CSSセレクタを使用) または object. 破棄するToast要素またはToastインスタンスです。
app.toast.get(el)- HTML要素によるToastインスタンスの取得
- el - HTMLElement または string (CSS Selectorを使用)。Toastの要素です。
メソッドは、Toast のインスタンスを返します。
app.toast.open(el, animate)- トーストを開く
- el - HTMLElement または string (with CSS Selector). Toastの要素を開きます。
- animate - boolean。アニメーションでトーストを開きます。
メソッドはToastのインスタンスを返します。
app.toast.close(el, animate)- トーストを閉じる
- el - HTMLElement または string (CSSセレクタ付き)。Toastの要素を閉じます。
- animate - boolean。アニメーションでToastを閉じます。
メソッドはToastのインスタンスを返します。
app.toast.show(parameters)- Toastのインスタンスを作成し、すぐに表示します。
- parameters - object. トーストのパラメータを持つオブジェクト
作成されたToastのインスタンスを返すメソッド
Toast のパラメータ
それでは、Toast を作成するために必要な、利用可能なパラメータのリストを見てみましょう。
Parameter | Type | Default | Description |
---|---|---|---|
el | HTMLElement | Toast 要素。HTML にすでに Toast 要素があり、この要素を使って新しいインスタンスを作成したい場合に便利です。 | |
icon | string | トーストのアイコンのHTMLレイアウト、例えば、<i class="f7-icons">house</i> または画像<img src="path/to/icon.png" /> 。 | |
text | string | トーストの内側のテキスト | |
position | string | bottom | トーストの位置。bottom、 center、 top`のいずれかです。 |
horizontalPosition | string | left | ワイドスクリーンでのトーストの水平方向の配置。上と下のトーストにのみ効果があります。left、 center、 right`のいずれかです。 |
closeButton | boolean | false | トーストを閉じるボタンを追加します。 |
closeButtonColor | string | デフォルトのカラーテーマのうちのひとつです。 | |
closeButtonText | string | Ok | 閉じるボタンのテキスト |
closeTimeout | number | トーストを自動的に閉じるまでのタイムアウト時間 (ミリ秒) | |
cssClass | string | 追加する css クラス | |
destroyOnClose | boolean | false | 閉じたときにトーストのインスタンスを破棄する |
render | function | Toast をレンダリングするカスタム関数。toastのhtmlを返さなければなりません。 | |
on | object | イベント ハンドラを持つオブジェクト。例えば、以下のようになります。
|
以下のすべてのパラメータは、アプリのグローバルパラメータの toast
プロパティで使用することができ、すべてのトーストのデフォルトを設定することができます。例えば、以下のようになります。
var app = new Framework7({
toast: {
closeTimeout: 3000,
closeButton: true,
}
});
Toast のメソッドとプロパティ
Toastを作成するには、次のようにコールする必要があります。
var toast = app.toast.create({ /* parameters */ })
その後、便利なメソッドやプロパティを持つ、初期化されたインスタンス (上記の例では toast
変数) が作成されます。
Properties | |
---|---|
toast.app | グローバルアプリのインスタンスへのリンク |
toast.el | Toast の HTML 要素 |
toast.$el | Toast HTML 要素を持つ Dom7 インスタンス |
toast.params | トーストのパラメータ |
Methods | |
toast.open() | トーストを開く |
toast.close() | トーストを閉じる |
toast.on(event, handler) | イベントハンドラの追加 |
toast.once(event, handler) | イベントハンドラを追加しますが、イベントハンドラが発生した後は削除されます |
toast.off(event, handler) | イベントハンドラの削除 |
toast.off(event) | 指定されたイベントのハンドラをすべて削除する |
toast.emit(event, ...args) | インスタンスでのイベント発生 |
Toast のイベント
Toast は、以下の DOM イベントを toast 要素で、イベントを app および toast インスタンスで発生させます。
DOM イベント
Event | Target | Description |
---|---|---|
toast:open | Toast Element<div class="toast"> | イベントは、Toast がオープニングアニメーションを開始したときに発生します。 |
toast:opened | Toast Element<div class="toast"> | イベントは、Toast のオープニングアニメーションが完了した後に発生します。 |
toast:close | Toast Element<div class="toast"> | イベントは、Toast が閉じるアニメーションを開始したときに発生します。 |
toast:closed | Toast Element<div class="toast"> | イベントは、Toast がそのクロージングアニメーションを完了した後に発生します。 |
アプリとToastインスタンスのイベント
Toast インスタンスは、self インスタンスと app インスタンスの両方でイベントを発行します。アプリインスタンスのイベントは、同じ名前でプレフィックスとして toast
が付きます。
Event | Arguments | Target | Description |
---|---|---|---|
closeButtonClick | toast | toast | ユーザーが Toast の閉じるボタンをクリックすると、イベントが発生します。イベントハンドラは引数として toast インスタンスを受け取ります。 |
toastCloseButtonClick | toast | app | |
open | toast | toast | イベントは、Toast がオープニングアニメーションを開始したときに発生します。As an argument event handler receives to toast instance |
toastOpen | toast | app | |
opened | toast | toast | イベントは、Toast のオープニングアニメーションが完了した後に発生します。As an argument event handler receives to the toast instance |
toastOpened | toast | app | |
close | toast | toast | イベントは、Toast が閉じるアニメーションを開始するときに発生します。As an argument event handler receives to toast instance |
toastClose | toast | app | |
closed | toast | toast | Toastが閉じるアニメーションを完了すると、イベントが発生します。As an argument event handler receive toast instance |
toastClosed | toast | app | |
beforeDestroy | toast | toast | イベントは、Toast インスタンスが破棄される直前に発生します。As an argument event handler receive to toast instance |
toastBeforeDestroy | toast | app |
CSS Variables
Below is the list of related CSS variables (CSS custom properties).
:root {
--f7-toast-text-color: #fff;
--f7-toast-font-size: 14px;
--f7-toast-icon-size: 48px;
--f7-toast-max-width: 568px;
}
.ios {
--f7-toast-bg-color: rgba(0, 0, 0, 0.75);
--f7-toast-bg-color-rgb: 0, 0, 0;
--f7-toast-padding-horizontal: 16px;
--f7-toast-padding-vertical: 12px;
--f7-toast-border-radius: 8px;
--f7-toast-button-min-width: 64px;
}
.md {
--f7-toast-bg-color: #323232;
--f7-toast-padding-horizontal: 24px;
--f7-toast-padding-vertical: 14px;
--f7-toast-border-radius: 4px;
--f7-toast-button-min-width: 64px;
}
.aurora {
--f7-toast-bg-color: #323232;
--f7-toast-padding-horizontal: 16px;
--f7-toast-padding-vertical: 16px;
--f7-toast-border-radius: 8px;
--f7-toast-button-min-width: 32px;
}
Examples
<template>
<div id="app">
<div class="view view-main view-init">
<!-- source start -->
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Toast</div>
</div>
</div>
<div class="page-content">
<div class="block block-strong">
<p>
<a href="#" class="button button-fill" @click=${showToastBottom}>Toast on Bottom</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastTop}>Toast on Top</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastCenter}>Toast on Center</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastIcon}>Toast with icon</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastLargeMessage}>Toast with large message</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastWithButton}>Toast with close button</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastWithCustomButton}>Toast with custom button</a>
</p>
<p>
<a href="#" class="button button-fill" @click=${showToastWithCallback}>Toast with callback on close</a>
</p>
</div>
</div>
<!-- source start -->
</div>
</div>
</div>
</template>
<script>
export default (props, { $f7, $theme, $on }) => {
let toastBottom;
let toastTop;
let toastCenter;
let toastIcon;
let toastLargeMessage;
let toastWithButton;
let toastWithCustomButton;
let toastWithCallback;
const showToastBottom = () => {
// Create toast
if (!toastBottom) {
toastBottom = $f7.toast.create({
text: 'This is default bottom positioned toast',
closeTimeout: 2000,
});
}
// Open it
toastBottom.open();
}
const showToastTop = () => {
// Create toast
if (!toastTop) {
toastTop = $f7.toast.create({
text: 'Top positioned toast',
position: 'top',
closeTimeout: 2000,
});
}
// Open it
toastTop.open();
}
const showToastCenter = () => {
// Create toast
if (!toastCenter) {
toastCenter = $f7.toast.create({
text: 'I\'m on center',
position: 'center',
closeTimeout: 2000,
});
}
// Open it
toastCenter.open();
}
const showToastIcon = () => {
// Create toast
if (!toastIcon) {
toastIcon = $f7.toast.create({
icon: $theme.ios || $theme.aurora ? '<i class="f7-icons">star_fill</i>' : '<i class="material-icons">star</i>',
text: 'I\'m with icon',
position: 'center',
closeTimeout: 2000,
});
}
// Open it
toastIcon.open();
}
const showToastLargeMessage = () => {
// Create toast
if (!toastLargeMessage) {
toastLargeMessage = $f7.toast.create({
text: 'This toast contains a lot of text. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil, quae, ab. Delectus amet optio facere autem sapiente quisquam beatae culpa dolore.',
closeTimeout: 2000,
});
}
// Open it
toastLargeMessage.open();
}
const showToastWithButton = () => {
// Create toast
if (!toastWithButton) {
toastWithButton = $f7.toast.create({
text: 'Toast with additional close button',
closeButton: true,
});
}
// Open it
toastWithButton.open();
}
const showToastWithCustomButton = () => {
// Create toast
if (!toastWithCustomButton) {
toastWithCustomButton = $f7.toast.create({
text: 'Custom close button',
closeButton: true,
closeButtonText: 'Close Me',
closeButtonColor: 'red',
});
}
// Open it
toastWithCustomButton.open();
}
const showToastWithCallback = () => {
// Create toast
if (!toastWithCallback) {
toastWithCallback = $f7.toast.create({
text: 'Callback on close',
closeButton: true,
on: {
close: function () {
$f7.dialog.alert('Toast closed');
},
}
});
}
// Open it
toastWithCallback.open();
}
$on('pageBeforeOut', () => {
$f7.toast.close();
})
$on('pageBeforeRemove', () => {
// Destroy toasts when page removed
if (toastBottom) toastBottom.destroy();
if (toastTop) toastTop.destroy();
if (toastCenter) toastCenter.destroy();
if (toastIcon) toastIcon.destroy();
if (toastLargeMessage) toastLargeMessage.destroy();
if (toastWithButton) toastWithButton.destroy();
if (toastWithCustomButton) toastWithCustomButton.destroy();
if (toastWithCallback) toastWithCallback.destroy();
})
return $render;
}
</script>