スポンサー
Support Framework7

ダイアログ

    ダイアログは、アプリのメインコンテンツの上にポップアップする小さなコンテンツペインです。ダイアログは通常、ユーザーに何かを尋ねたり、ユーザーに通知したり警告したりするために使用されます。ダイアログは、他のすべてのモーダルと同様に、いわゆる「一時的な表示」の一部です。

    ダイアログは、JavaScriptを使用してのみ開くことができます。そこで、ダイアログを扱う関連アプリのメソッドを見てみましょう。

    ダイアログアプリのメソッド

    ダイアログを扱うアプリの関連メソッドを見てみましょう。

    app.dialog.create(parameters)- ダイアログのインスタンスを作成する

    • parameters - object. ダイアログのパラメータを持つオブジェクト

    作成されたDialogのインスタンスを返すメソッド

    app.dialog.destroy(el)- ダイアログインスタンスの破棄

    • el - HTMLElement または string (CSSセレクタ付き) または object. 壊すDialog要素またはDialogインスタンスです。

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

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

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

    app.dialog.open(el, animate)- ダイアログを開く

    • el - HTMLElement または string (with CSS Selector)。開くダイアログの要素
    • animate - boolean。ダイアログをアニメーションで開きます。

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

    app.dialog.close(el, animate)- ダイアログを閉じる

    • el - HTMLElementまたはstring(CSSセレクタ付き)を指定します。ダイアログの要素を閉じる。
    • animate - boolean。アニメーションでDialogを閉じます。

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

    ダイアログのパラメータ

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

    ParameterTypeDefaultDescription
    elHTMLElement
    string
    Dialog要素です。HTMLにすでにDialog要素があり、この要素を使って新しいインスタンスを作成したい場合に便利です。
    containerElHTMLElement
    string
    アプリのルート要素(app.el)ではなく、カスタム要素にダイアログをマウントすることができます。
    backdropbooleantrueダイアログの背景を有効にします (背後にある暗い半透明のレイヤー)。
    closeByBackdropClickbooleanfalse有効にすると、背景をクリックするとダイアログが閉じます。
    animatebooleantrueダイアログの開閉をアニメーションで行うかどうか。.open().close()`メソッドで上書きすることができます。
    titlestringダイアログのタイトル
    textstringダイアログの内側のテキスト
    contentstringダイアログテキストに続くカスタムダイアログのコンテンツ。任意のHTMLコンテンツを受け入れることができます。
    buttonsarray[]ダイアログボタンの配列で、各ボタンは ボタンのパラメータを持つオブジェクトです。
    verticalButtonsbooleanfalse垂直方向のボタンレイアウトを有効にする
    destroyOnClosebooleanfalse有効にすると、閉じたときにダイアログを自動的に破棄します
    onClickfunction(dialog, index)ダイアログボタンをクリックした後に実行されるコールバック関数です。引数として、ダイアログのインスタンスとクリックされたボタンのインデックス番号を受け取ります。
    cssClassstring追加するcssクラス
    onobject

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

    var dialog = app.dialog.create({
      text: 'Hello World',
      on: {
        opened: function () {
          console.log('Dialog opened')
        }
      }
    })

    ボタンのパラメータ

    配列 buttons に含まれる各ボタンは、ボタンのパラメータを持つオブジェクトとして表示されなければなりません。

    ParameterTypeDefaultDescription
    textstringボタンのテキストを表す文字列 (HTML文字列でも可)
    boldbooleanfalseボタンのテキストを太字にします。
    colorstringボタンの色。デフォルトの色のうちのひとつです。
    closebooleantrue有効な場合、ボタンをクリックするとダイアログを閉じます
    cssClassstring追加のボタン CSS クラス
    keyCodesarray[]ボタンをクリックしたときに使用されるキーボードのキーコードを配列で指定します。例えば、キーコード13は、Enterキーを押したときにボタンがクリックされることを意味します。
    onClickfunction(dialog, e)このボタンをクリックした後に実行されるコールバック関数

    ダイアログのメソッドとプロパティ

    ダイアログを作成するためには、コールを行わなければなりません。

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

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

    Properties
    dialog.appグローバルアプリのインスタンスへのリンク
    dialog.elダイアログ HTML 要素
    dialog.$elダイアログを持つ Dom7 インスタンス HTML 要素
    dialog.backdropEl背景のHTML要素
    dialog.$backdropEl背景のHTML要素を持つDom7インスタンス
    dialog.paramsダイアログパラメータ
    dialog.openedダイアログを開くかどうかを示すブール値のプロップ
    Methods
    dialog.open(animate)ダイアログを開く。ここでは
    • animate - boolean (デフォルトでは true) - アニメーションで開くかどうかを定義します。
    dialog.close(animate)ダイアログを閉じます。ダイアログを閉じる
    • animate - boolean (デフォルトでは true) - アニメーションで閉じるかどうかを定義します。
    dialog.setProgress(progress, duration)ダイアログプログレスのショートカットが使用されている場合、ダイアログの進行状況を設定します。
    • progress - number - プログレスバーの進行状況(0から100まで)。
    • duration - number - プログレスバーの変更時間(単位:ミリ秒)。
    dialog.setTitle(title)ダイアログのタイトルを設定
    • title - string - 新しいダイアログのタイトル。
    dialog.setText(text)ダイアログのテキストを設定
    • text - string - 新しいダイアログのテキスト。
    dialog.destroy()ダイアログの破棄
    dialog.on(event, handler)イベントハンドラの追加
    dialog.once(event, handler)発射された後に削除されるイベントハンドラの追加
    dialog.off(event, handler)イベントハンドラの削除
    dialog.off(event)指定されたイベントのハンドラをすべて削除する
    dialog.emit(event, ...args)インスタンスでのイベント発生

    ダイアログのイベント

    ダイアログは、以下のDOMイベントをダイアログ要素に、イベントをアプリとダイアログインスタンスに発行します。

    DOMイベント

    EventTargetDescription
    dialog:openDialog Element<div class="dialog">ダイアログがオープニングアニメーションを開始するとイベントが発生します。
    dialog:openedDialog Element<div class="dialog">イベントは、ダイアログがそのオープニングアニメーションを完了した後に発生します。
    dialog:closeDialog Element<div class="dialog">イベントは、ダイアログが閉じるアニメーションを開始したときに発生します。
    dialog:closedDialog Element<div class="dialog">イベントはダイアログが閉じるアニメーションを完了した後に発生します。
    dialog:beforedestroyDialog Element<div class="dialog">イベントはダイアログインスタンスが破壊される直前に発生します。

    アプリとダイアログインスタンスのイベント

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

    EventArgumentsTargetDescription
    opendialogdialogイベントは、ダイアログがそのオープニングアニメーションを開始するときにトリガされます。引数としてイベントハンドラはダイアログインスタンスを受け取ります。
    dialogOpendialogapp
    openeddialogdialogイベントはダイアログがそのオープニングアニメーションを完了した後にトリガされます。As an argument event handler receive dialog instance
    dialogOpeneddialogapp
    closedialogdialogダイアログが閉じるアニメーションを開始するとイベントが発生します。As an argument event handler receive dialog instance
    dialogClosedialogapp
    closeddialogdialogイベントはDialogが閉じるアニメーションを完了した後に発生します。As an argument event handler receive dialog instance
    dialogCloseddialogapp
    beforeDestroydialogdialogイベントはDialogインスタンスが破壊される直前に発生します。ダイアログインスタンスを受け取るイベントハンドラの引数として
    dialogBeforeDestroydialogapp

    ダイアログのショートカット

    ダイアログの作成をはるかに容易にするいくつかのショートカットメソッドがあります。

    最初に、そのようなショートカットの設定を助け、ローカリゼーションの目的にも使用される、アプリのグローバルパラメータを確認しましょう。

    ダイアログのショートカットのパラメータ

    以下のグローバルダイアログショートカットパラメータは、アプリの初期化において、dialogプロパティで渡すことができます。

    var app = new Framework7({
      dialog: {
        // すべてのダイアログショートカットのデフォルトタイトルを設定する
        title: 'My App',
        // デフォルトの "OK "ボタンのテキストを変更
        buttonOk: 'Done',
        ...
      }
    });
    ParameterTypeDefaultDescription
    titlestringダイアログのショートカットのデフォルトのタイトルです。指定されていない場合は、app.nameと同じになります。
    buttonOkstringOKデフォルトの "OK "ボタンのテキスト
    buttonCancelstringCancelデフォルトの "Cancel "ボタンのテキスト
    usernamePlaceholderstringUsernameログインダイアログのデフォルトのユーザー名フィールドのプレースホルダー
    passwordPlaceholderstringPasswordLogin & Passwordダイアログでのデフォルトのパスワードフィールドのプレースホルダー
    preloaderTitlestringLoading...Preloaderダイアログのデフォルトのタイトル
    progressTitlestringLoading...Progressダイアログのデフォルトのタイトル
    destroyPredefinedDialogsbooleantrue終了時にすべての定義済みダイアログ(Alert、Confirm、Promptなど)を自動的に破棄する。
    keyboardActionsbooleantrue定義済みのダイアログ(Alert、Confirm、Prompt、Login、Password)の "Ok "および "Cancel "ボタンのキーボードショートカット(EnterおよびEsc)を有効にする。
    autoFocusbooleantrue有効にすると、ダイアログオープン時にダイアログ入力をオートフォーカスします。Prompt、Login、Passwordなどの入力項目がある定義済みのダイアログでのみ有効です。

    ここで、利用可能なダイアログのショートカットを見てみましょう。

    アラート

    アラートダイアログを作成するには、以下のアプリのメソッドを使用する必要があります。

    app.dialog.alert(text, title, callback)- アラートダイアログを作成し、それを開く

    • text - string. アラートダイアログのテキスト
    • title - string. アラートダイアログのタイトル
    • callback - function。オプションです。ユーザーがアラートボタンをクリックした後に実行されるコールバック関数

    メソッドは作成されたダイアログのインスタンスを返します。

    app.dialog.alert(text, callback)- デフォルトのタイトルでアラートダイアログを作成し、それを開く

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

    確認

    確認ダイアログは、通常、何らかのアクションを確認する必要があるときに使用されます。確認モーダルを開くには、以下のAppメソッドの1つを呼び出す必要があります。

    app.dialog.confirm(text, title, callbackOk, callbackCancel)- 確認ダイアログを作成し、それを開く

    • text - string. 確認ダイアログのテキスト
    • title - string. 確認ダイアログのタイトル
    • callbackOk - function。オプションです。ユーザーが確認ダイアログの「Ok」ボタンをクリックしたときに実行されるコールバック関数(ユーザーがアクションを確認したとき)。
    • callbackCancel - function。任意です。ユーザーが確認ダイアログの "Cancel "ボタンをクリックしたときに実行されるコールバック関数 (ユーザーがアクションを解除したとき)

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

    app.dialog.confirm(text, callbackOk, callbackCancel)- デフォルトのタイトルで確認ダイアログを作成し、それを開きます

    メソッドは作成されたダイアログのインスタンスを返します。

    プロンプト

    プロンプトダイアログは、ユーザーから何らかのデータや回答を得る必要がある場合に使用されます。プロンプトダイアログを開くには、以下のAppメソッドのいずれかを呼び出す必要があります。

    app.dialog.prompt(text, title, callbackOk, callbackCancel, defaultValue)- プロンプトダイアログを作成し、それを開く

    • text - string. プロンプトダイアログのテキスト
    • title - string. プロンプトダイアログのタイトル
    • callbackOk - function(value)。オプションです。プロンプトダイアログでユーザーが「Ok」ボタンをクリックしたときに実行されるコールバック関数です。この関数は、テキスト入力の値を引数として受け取ります。
    • callbackCancel - function(value)。オプションです。プロンプトダイアログの「キャンセル」ボタンをクリックしたときに実行されるコールバック関数です。引数として、テキスト入力の値を受け取ります。
    • defaultValue - string。任意です。プロンプト入力のデフォルト値

    app.dialog.prompt(text, callbackOk, callbackCancel, defaultValue)- プロンプトダイアログをデフォルトのタイトルで作成し、それを開きます。

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

    ログイン

    app.dialog.login(text, title, callbackOk, callbackCancel)- ログインダイアログを作成し、それを開く

    • text - string. ログインダイアログのテキスト
    • title - string. ログインダイアログのタイトル
    • callbackOk - function(username, password)。オプションです。ユーザーがログインダイアログの「Ok」ボタンをクリックしたときに実行されるコールバック関数です。引数として、ユーザー名とパスワードの値を受け取ります。
    • callbackCancel - function(username, password)。オプションです。ユーザーがLoginダイアログの "Cancel "ボタンをクリックしたときに実行されるコールバック関数。引数として、ユーザー名とパスワードの値を受け取ります。

    app.dialog.login(text, callbackOk, callbackCancel)- デフォルトのタイトルでログインダイアログを作成し、それを開きます。

    メソッドは作成されたダイアログのインスタンスを返します。

    パスワード

    パスワードダイアログは、パスワードのみを要求する必要がある場合に便利です。

    app.dialog.password(text, title, callbackOk, callbackCancel)- パスワードダイアログを作成し、それを開きます

    • text - string. パスワードダイアログのテキスト
    • title - string. パスワードダイアログのタイトル
    • callbackOk - function(password)。オプションです。ユーザーがパスワードダイアログの「Ok」ボタンをクリックしたときに実行されるコールバック関数です。引数として、パスワードの値を受け取ります。
    • callbackCancel - function(password)。オプションです。パスワードダイアログの "Cancel "ボタンをクリックしたときに実行されるコールバック関数。引数関数として、パスワードの値を受け取ります。

    app.dialog.password(text, callbackOk, callbackCancel)- デフォルトのタイトルでパスワードダイアログを作成し、それを開く

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

    プリローダー

    プリローダーダイアログは、(Ajaxリクエストのような)バックグラウンドアクティビティを示し、このアクティビティ中のユーザーのアクションをブロックするために使用されます。プレローダダイアログを開くには、適切なAppメソッドを呼び出す必要があります。

    app.dialog.preloader(title, color)- プリローダダイアログを作成し、それを開く

    • title - string。任意です。プリローダダイアログのタイトル
    • color - 文字列を指定します。任意です。プレローダの色。デフォルトの色のいずれかです。

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

    進捗状況

    Preloaderダイアログと同じですが、preloaderの代わりにprogressbarがあります。

    app.dialog.progress(title, progress, color)- Progressダイアログを作成し、それを開く

    • title - string。任意です。プログレスダイアログのタイトル
    • progress - 数字。任意です。プログレスバーの進行状況 (0から100まで)。数字がない場合、プログレスバーは無限大になります。
    • color - string。任意です。プログレスバーの色。デフォルトカラーのうちのひとつです。

    作成されたダイアログのインスタンスを返すメソッド

    CSS Variables

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

    Note that commented variables are not specified by default and their values is what they fallback to in this case.

    :root {
      --f7-dialog-button-text-color: var(--f7-theme-color);
      --f7-dialog-button-text-align: center;
      --f7-dialog-input-bg-color: #fff;
    }
    :root .theme-dark,
    :root.theme-dark {
      --f7-dialog-text-color: #fff;
    }
    .ios {
      --f7-dialog-box-shadow: none;
      --f7-dialog-width: 270px;
      --f7-dialog-inner-padding: 16px;
      --f7-dialog-border-radius: 13px;
      --f7-dialog-text-align: center;
      --f7-dialog-font-size: 14px;
      --f7-dialog-title-text-color: inherit;
      --f7-dialog-title-font-size: 18px;
      --f7-dialog-title-font-weight: 600;
      --f7-dialog-title-line-height: inherit;
      --f7-dialog-button-font-size: 17px;
      --f7-dialog-button-height: 44px;
      --f7-dialog-button-letter-spacing: 0;
      --f7-dialog-button-font-weight: 400;
      --f7-dialog-button-text-transform: none;
      --f7-dialog-input-border-radius: 4px;
      --f7-dialog-input-font-size: 14px;
      --f7-dialog-input-height: 32px;
      --f7-dialog-input-border-width: 1px;
      --f7-dialog-input-placeholder-color: #a9a9a9;
      --f7-dialog-preloader-size: 34px;
      --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);
      --f7-dialog-bg-color-rgb: 255, 255, 255;
      --f7-dialog-text-color: #000;
      --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);
      --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);
      --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);
    }
    .ios .theme-dark,
    .ios.theme-dark {
      --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);
      --f7-dialog-bg-color-rgb: 45, 45, 45;
      --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);
      --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);
      --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);
      --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);
    }
    .md {
      --f7-dialog-box-shadow: var(--f7-elevation-24);
      --f7-dialog-width: 280px;
      --f7-dialog-inner-padding: 24px;
      --f7-dialog-border-radius: 4px;
      --f7-dialog-text-align: left;
      --f7-dialog-font-size: 16px;
      --f7-dialog-title-font-size: 20px;
      --f7-dialog-title-font-weight: 500;
      --f7-dialog-title-line-height: 1.3;
      --f7-dialog-button-font-size: 14px;
      --f7-dialog-button-height: 36px;
      --f7-dialog-button-letter-spacing: 0.05em;
      --f7-dialog-button-font-weight: 500;
      --f7-dialog-button-text-transform: uppercase;
      --f7-dialog-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);
      --f7-dialog-input-border-radius: 0px;
      --f7-dialog-input-font-size: 16px;
      --f7-dialog-input-height: 36px;
      --f7-dialog-input-border-color: transparent;
      --f7-dialog-input-border-width: 0px;
      --f7-dialog-preloader-size: 32px;
      --f7-dialog-bg-color: #fff;
      --f7-dialog-text-color: rgba(0, 0, 0, 0.54);
      --f7-dialog-title-text-color: #212121;
      --f7-dialog-input-placeholder-color: rgba(0, 0, 0, 0.35);
    }
    .md .theme-dark,
    .md.theme-dark {
      --f7-dialog-bg-color: #1c1c1d;
      --f7-dialog-title-text-color: #fff;
      --f7-dialog-input-bg-color: transparent;
      --f7-dialog-input-placeholder-color: rgba(255, 255, 255, 0.54);
    }
    .aurora {
      --f7-dialog-box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.15), 0 25px 30px 0 rgba(0,0,0,0.35);
      --f7-dialog-width: 300px;
      --f7-dialog-inner-padding: 20px;
      --f7-dialog-border-radius: 8px;
      --f7-dialog-text-align: left;
      --f7-dialog-font-size: 14px;
      --f7-dialog-title-font-size: 18px;
      --f7-dialog-title-font-weight: 700;
      --f7-dialog-title-line-height: inherit;
      --f7-dialog-button-font-size: 14px;
      --f7-dialog-button-height: 36px;
      --f7-dialog-button-letter-spacing: 0;
      --f7-dialog-button-font-weight: 600;
      --f7-dialog-button-text-transform: uppercase;
      /*
      --f7-dialog-button-pressed-bg-color: var(--f7-theme-color-shade);
      --f7-dialog-button-hover-bg-color: var(--f7-theme-color-tint);
      */
      --f7-dialog-input-border-radius: 8px;
      --f7-dialog-input-font-size: 16px;
      --f7-dialog-input-height: 32px;
      --f7-dialog-input-border-width: 1px;
      --f7-dialog-preloader-size: 24px;
      --f7-dialog-bg-color: #fff;
      --f7-dialog-title-text-color: inherit;
      --f7-dialog-text-color: #000;
      --f7-dialog-button-text-color: #fff;
      --f7-dialog-input-border-color: rgba(0, 0, 0, 0.2);
      --f7-dialog-input-placeholder-color: rgba(0, 0, 0, 0.32);
    }
    .aurora .theme-dark,
    .aurora.theme-dark {
      --f7-dialog-bg-color: #1c1c1d;
      --f7-dialog-title-text-color: #fff;
      --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.25);
      --f7-dialog-input-placeholder-color: rgba(255, 255, 255, 0.54);
      --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);
    }
    

    Examples

    <template>
      <div class="page">
        <div class="navbar">
          <div class="navbar-bg"></div>
          <div class="navbar-inner">
            <div class="title">Dialog</div>
          </div>
        </div>
        <div class="page-content">
          <div class="block block-strong">
            <p class="row">
              <button class="col button button-fill open-alert">Alert</button>
              <button class="col button button-fill open-confirm">Confirm</button>
              <button class="col button button-fill open-prompt">Prompt</button>
            </p>
            <p class="row">
              <button class="col button button-fill open-login">Login</button>
              <button class="col button button-fill open-password">Password</button>
            </p>
          </div>
          <div class="block-title">Vertical Buttons</div>
          <div class="block block-strong">
            <p>
              <button class="button button-fill open-vertical">Vertical Buttons</button>
            </p>
          </div>
          <div class="block-title">Preloader Dialog</div>
          <div class="block block-strong">
            <p class="row">
              <button class="col button button-fill open-preloader">Preloader</button>
              <button class="col button button-fill open-preloader-custom">Custom Title</button>
            </p>
          </div>
          <div class="block-title">Progress Dialog</div>
          <div class="block block-strong">
            <p class="row">
              <button class="col button button-fill open-progress">Determined</button>
              <button class="col button button-fill open-progress-infinite">Infinite</button>
            </p>
          </div>
        </div>
      </div>
    </template>
    <script>
      export default (props, { $, $f7, $on }) => {
        $on('pageInit', () => {
          // Alert
          $('.open-alert').on('click', function () {
            $f7.dialog.alert('Hello');
          });
    
          // Confirm
          $('.open-confirm').on('click', function () {
            $f7.dialog.confirm('Are you feel good today?', function () {
              $f7.dialog.alert('Great!');
            });
          });
    
          // Prompt
          $('.open-prompt').on('click', function () {
            $f7.dialog.prompt('What is your name?', function (name) {
              $f7.dialog.confirm('Are you sure that your name is ' + name + '?', function () {
                $f7.dialog.alert('Ok, your name is ' + name);
              });
            });
          });
    
          // Login
          $('.open-login').on('click', function () {
            $f7.dialog.login('Enter your username and password', function (username, password) {
              $f7.dialog.alert('Thank you!<br>Username:' + username + '<br>Password:' + password);
            });
          });
    
          // Password
          $('.open-password').on('click', function () {
            $f7.dialog.password('Enter your password', function (password) {
              $f7.dialog.alert('Thank you!<br>Password:' + password);
            });
          });
    
          // Vertical Buttons
          $('.open-vertical').on('click', function () {
            $f7.dialog.create({
              title: 'Vertical Buttons',
              text: 'Dialog with vertical buttons',
              buttons: [
                {
                  text: 'Button 1',
                },
                {
                  text: 'Button 2',
                },
                {
                  text: 'Button 3',
                },
              ],
              verticalButtons: true,
            }).open();
          });
    
          // Preloader
          $('.open-preloader').on('click', function () {
            $f7.dialog.preloader();
            setTimeout(function () {
              $f7.dialog.close();
            }, 3000);
          });
    
          // Preloader with custom text
          $('.open-preloader-custom').on('click', function () {
            $f7.dialog.preloader('My text...');
            setTimeout(function () {
              $f7.dialog.close();
            }, 3000);
          });
    
          // Progress
          $('.open-progress').on('click', function () {
            var progress = 0;
            var dialog = $f7.dialog.progress('Loading assets', progress);
            dialog.setText('Image 1 of 10');
            var interval = setInterval(function () {
              progress += 10;
              dialog.setProgress(progress);
              dialog.setText('Image ' + ((progress) / 10) + ' of 10');
              if (progress === 100) {
                clearInterval(interval);
                dialog.close();
              }
            }, 300)
          });
    
          // Progress Infinite
          $('.open-progress-infinite').on('click', function () {
            $f7.dialog.progress();
            setTimeout(function () {
              $f7.dialog.close();
            }, 3000);
          });
        })
    
        return $render;
      }
    </script>