スポンサー
Support Framework7

トースト

    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 を作成するために必要な、利用可能なパラメータのリストを見てみましょう。

    ParameterTypeDefaultDescription
    elHTMLElementToast 要素。HTML にすでに Toast 要素があり、この要素を使って新しいインスタンスを作成したい場合に便利です。
    iconstringトーストのアイコンのHTMLレイアウト、例えば、<i class="f7-icons">house</i>または画像<img src="path/to/icon.png" />
    textstringトーストの内側のテキスト
    positionstringbottomトーストの位置。bottomcentertop`のいずれかです。
    horizontalPositionstringleftワイドスクリーンでのトーストの水平方向の配置。上と下のトーストにのみ効果があります。leftcenterright`のいずれかです。
    closeButtonbooleanfalseトーストを閉じるボタンを追加します。
    closeButtonColorstringデフォルトのカラーテーマのうちのひとつです。
    closeButtonTextstringOk閉じるボタンのテキスト
    closeTimeoutnumberトーストを自動的に閉じるまでのタイムアウト時間 (ミリ秒)
    cssClassstring追加する css クラス
    destroyOnClosebooleanfalse閉じたときにトーストのインスタンスを破棄する
    renderfunctionToast をレンダリングするカスタム関数。toastのhtmlを返さなければなりません。
    onobject

    イベント ハンドラを持つオブジェクト。例えば、以下のようになります。

    var toast = app.toast.create({
      text: 'Hello, how are you?',
      on: {
        opened: function () {
          console.log('Toast opened')
        }
      }
    })

    以下のすべてのパラメータは、アプリのグローバルパラメータの toast プロパティで使用することができ、すべてのトーストのデフォルトを設定することができます。例えば、以下のようになります。

    var app = new Framework7({
      toast: {
        closeTimeout: 3000,
        closeButton: true,
      }
    });

    Toast のメソッドとプロパティ

    Toastを作成するには、次のようにコールする必要があります。

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

    その後、便利なメソッドやプロパティを持つ、初期化されたインスタンス (上記の例では toast 変数) が作成されます。

    Properties
    toast.appグローバルアプリのインスタンスへのリンク
    toast.elToast の HTML 要素
    toast.$elToast 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 イベント

    EventTargetDescription
    toast:openToast Element<div class="toast">イベントは、Toast がオープニングアニメーションを開始したときに発生します。
    toast:openedToast Element<div class="toast">イベントは、Toast のオープニングアニメーションが完了した後に発生します。
    toast:closeToast Element<div class="toast">イベントは、Toast が閉じるアニメーションを開始したときに発生します。
    toast:closedToast Element<div class="toast">イベントは、Toast がそのクロージングアニメーションを完了した後に発生します。

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

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

    EventArgumentsTargetDescription
    closeButtonClicktoasttoastユーザーが Toast の閉じるボタンをクリックすると、イベントが発生します。イベントハンドラは引数として toast インスタンスを受け取ります。
    toastCloseButtonClicktoastapp
    opentoasttoastイベントは、Toast がオープニングアニメーションを開始したときに発生します。As an argument event handler receives to toast instance
    toastOpentoastapp
    openedtoasttoastイベントは、Toast のオープニングアニメーションが完了した後に発生します。As an argument event handler receives to the toast instance
    toastOpenedtoastapp
    closetoasttoastイベントは、Toast が閉じるアニメーションを開始するときに発生します。As an argument event handler receives to toast instance
    toastClosetoastapp
    closedtoasttoastToastが閉じるアニメーションを完了すると、イベントが発生します。As an argument event handler receive toast instance
    toastClosedtoastapp
    beforeDestroytoasttoastイベントは、Toast インスタンスが破棄される直前に発生します。As an argument event handler receive to toast instance
    toastBeforeDestroytoastapp

    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>