mdui のダイアログは非常に用途の広いコンポーネントで、ユーザーに情報を尋ねたり、通知や警告を行ったりするために頻繁に使用されます。
同時に表示されるダイアログは 1 つだけです。現在のダイアログが閉じられる前に次のダイアログを開いた場合、次のダイアログはキューに追加され、現在のダイアログが閉じられた後に開かれます。
<div class="mdui-dialog">
<div class="mdui-dialog-title">Are you sure?</div>
<div class="mdui-dialog-content">You'll lose all photos and media!</div>
<div class="mdui-dialog-actions">
<button class="mdui-btn mdui-ripple">cancel</button>
<button class="mdui-btn mdui-ripple">erase</button>
</div>
</div><div class="mdui-dialog">
<div class="mdui-dialog-content">Discard draft?</div>
<div class="mdui-dialog-actions">
<button class="mdui-btn mdui-ripple">cancel</button>
<button class="mdui-btn mdui-ripple">discard</button>
</div>
</div>ダイアログ下部のボタンはデフォルトで水平に並びます。<div class="mdui-dialog-actions"></div> に .mdui-dialog-actions-stacked クラスを追加するだけで、ボタンを垂直に並べることができます。
<div class="mdui-dialog">
<div class="mdui-dialog-title">Use Google's location service?</div>
<div class="mdui-dialog-content">Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.</div>
<div class="mdui-dialog-actions mdui-dialog-actions-stacked">
<button class="mdui-btn mdui-ripple">turn on speed boost</button>
<button class="mdui-btn mdui-ripple">no thanks</button>
</div>
</div>ダイアログのコンテンツがダイアログの高さを超えると、.mdui-dialog-content 内にスクロールバーが表示されます。
.mdui-dialog-title と .mdui-dialog-actions を .mdui-dialog-content の内側に配置すると、タイトルと下部のボタンはスクロールに合わせて移動します。逆に、外側に配置すると、タイトルとボタンはそれぞれ上部と下部に固定され、スクロールしても移動しません。
<div class="mdui-dialog">
<div class="mdui-dialog-content">
<div class="mdui-dialog-title">Use Google's location service?</div>
Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.
<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test
</div>
<div class="mdui-dialog-actions">
<button class="mdui-btn mdui-ripple">no thanks</button>
<button class="mdui-btn mdui-ripple">turn on speeboost</button>
</div>
</div>ダイアログでは <div class="mdui-dialog"></div> だけが必須であり、その中のコンテンツは任意の HTML に置き換えることができます。
以下の例では、ダイアログ内にタブを配置しています:
<div class="mdui-dialog" id="example-4">
<div class="mdui-tab mdui-tab-full-width" id="example4-tab">
<a href="#example4-tab1" class="mdui-ripple">web</a>
<a href="#example4-tab2" class="mdui-ripple">shopping</a>
<a href="#example4-tab3" class="mdui-ripple">videos</a>
</div>
<div id="example4-tab1" class="mdui-p-a-2">
<p>tab 1</p>
<p>tab 1</p>
<p>tab 1</p>
<p>tab 1</p>
<p>tab 1</p>
<p>tab 1</p>
</div>
<div id="example4-tab2" class="mdui-p-a-2">
<p>tab 2</p>
<p>tab 2</p>
<p>tab 2</p>
<p>tab 2</p>
<p>tab 2</p>
<p>tab 2</p>
</div>
<div id="example4-tab3" class="mdui-p-a-2">
<p>tab 3</p>
<p>tab 3</p>
<p>tab 3</p>
<p>tab 3</p>
<p>tab 3</p>
<p>tab 3</p>
</div>
</div>
<script>
var tab = new mdui.Tab('#example4-tab');
document.getElementById('example-4').addEventListener('open.mdui.dialog', function () {
tab.handleUpdate();
});
</script>この方法では、JavaScript コードを記述する必要はありません。制御する要素(例:ボタン)に mdui-dialog="options" 属性を追加するだけです。カスタム属性を使用して呼び出す場合は、制御対象のダイアログを指定するための target パラメーターを追加する必要があります。値は制御対象のダイアログの CSS セレクターです。
<button class="mdui-btn mdui-ripple mdui-color-theme-accent" mdui-dialog="{target: '#exampleDialog'}">open</button>
<div class="mdui-dialog" id="exampleDialog">
<div class="mdui-dialog-title">Are you sure?</div>
<div class="mdui-dialog-content">You'll lose all photos and media!</div>
<div class="mdui-dialog-actions">
<button class="mdui-btn mdui-ripple" mdui-dialog-close>cancel</button>
<button class="mdui-btn mdui-ripple" mdui-dialog-confirm>erase</button>
</div>
</div>ダイアログ内の要素にいくつかの属性を追加して、イベントをバインドできます。これらの属性は、JavaScript を使用して呼び出す場合でも使用できます。
| 属性 | 説明 |
|---|---|
mdui-dialog-close | この要素をクリックすると、close.mdui.dialog イベントがトリガーされ、ダイアログが閉じます。 |
mdui-dialog-cancel | この要素をクリックすると、cancel.mdui.dialog イベントがトリガーされます。 |
mdui-dialog-confirm | この要素をクリックすると、confirm.mdui.dialog イベントがトリガーされます。 |
インスタンス化:
// selector は、ダイアログの CSS セレクター、DOM 要素、または HTML 文字列です。
// options は設定パラメーターです。以下のパラメーターリストを参照してください。
var inst = new mdui.Dialog(selector, options);| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
overlay | boolean | true | ダイアログを開くときにオーバーレイを表示するかどうか。 |
history | boolean | true | ダイアログを開くときに URL ハッシュを追加するかどうか。true の場合、ダイアログを開いた後にブラウザの戻るボタンや Android の戻るキーでダイアログを閉じることができます。 |
modal | boolean | false | ダイアログをモーダルにするかどうか。falseの場合、ダイアログの外側の領域をクリックするとダイアログが閉じますが、それ以外の場合は閉じません。 |
closeOnEsc | boolean | true | Escキーを押したときにダイアログを閉じるかどうか。 |
closeOnCancel | boolean | true | キャンセルボタンを押したときにダイアログを閉じるかどうか。 |
closeOnConfirm | boolean | true | 確認ボタンを押したときにダイアログを閉じるかどうか。 |
destroyOnClosed | boolean | false | ダイアログを閉じた後、自動的に破棄するかどうか。 |
| メソッド名 | 説明 |
|---|---|
open() | ダイアログを開きます。 |
close() | ダイアログを閉じます。 |
toggle() | ダイアログの表示状態を切り替えます。 |
getState() | ダイアログの状態を取得します。4つの状態(opening、opened、closing、closed)があります。 |
destroy() | ダイアログを破棄します。 |
handleUpdate() | ダイアログの位置とスクロールバーの高さを再調整します。ダイアログを開いた後にコンテンツを変更した場合は、このメソッドを呼び出す必要があります。 |
| イベント名 | 説明 | ターゲット | パラメータ |
|---|---|---|---|
open.mdui.dialog | ダイアログのオープンアニメーションが開始されたときにトリガーされます。 | <div class="mdui-dialog"></div> | event._detail.inst:インスタンス |
opened.mdui.dialog | ダイアログのオープンアニメーションが終了したときにトリガーされます。 | ||
close.mdui.dialog | ダイアログのクローズアニメーションが開始されたときにトリガーされます。 | ||
closed.mdui.dialog | ダイアログのクローズアニメーションが終了したときにトリガーされます。 | ||
cancel.mdui.dialog | キャンセルボタンが押されたときにトリガーされます。 | ||
confirm.mdui.dialog | 確認ボタンが押されたときにトリガーされます。 |
mduiは、一般的なシナリオ向けに事前に定義されたいくつかのダイアログ関数を提供しています。これらの定義済みダイアログはJavaScriptのみで呼び出され、HTMLコードを記述する必要はありません。
これらの関数はすべてダイアログのインスタンスを返します。
タイトル、コンテンツ、ボタンなどをカスタマイズできるダイアログを開きます。このメソッドは汎用的であり、mdui.alert()、mdui.confirm()、mdui.prompt() はすべてこのメソッドを使用してカプセル化されています。
mdui.dialog(options)mdui.dialog({
title: 'title',
content: 'content',
buttons: [
{
text: 'キャンセル'
},
{
text: '確認',
onClick: function(inst){
mdui.alert('確認ボタンをクリックした時のコールバック');
}
}
]
});パラメータ
| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
title | string | ダイアログのタイトル。 | |
content | string | ダイアログのコンテンツ。 | |
buttons | array | ボタンの配列。各ボタンは、ボタンパラメーターを持つオブジェクトです(下の表を参照)。 | |
stackedButtons | boolean | false | ボタンを垂直に並べるかどうか。 |
cssClass | string | .mdui-dialog に追加される CSS クラス。 | |
history | boolean | true | hashchange イベントをリッスンするかどうか。trueの場合、Androidの戻るキーやブラウザの戻るボタンでダイアログを閉じることができます。 |
overlay | boolean | true | ダイアログを開いた後にオーバーレイを表示するかどうか。 |
modal | boolean | false | ダイアログをモーダルにするかどうか。falseの場合、ダイアログの外側の領域をクリックするとダイアログが閉じますが、それ以外の場合は閉じません。 |
closeOnEsc | boolean | true | Escキーを押したときにダイアログを閉じるかどうか。 |
destroyOnClosed | boolean | true | ダイアログを閉じた後、自動的に破棄するかどうか。 |
onOpen | function | オープンアニメーション開始時のコールバック。引数はダイアログのインスタンスです。 | |
onOpened | function | オープンアニメーション終了時のコールバック。引数はダイアログのインスタンスです。 | |
onClose | function | クローズアニメーション開始時のコールバック。引数はダイアログのインスタンスです。 | |
onClosed | function | クローズアニメーション終了時のコールバック。引数はダイアログのインスタンスです。 |
ボタンのパラメーター:
| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
text | string | ボタンのテキスト。 | |
bold | boolean | false | ボタンのテキストを太字にするかどうか。 |
close | boolean | true | ボタンをクリックした後にダイアログを閉じるかどうか。 |
onClick | function | ボタンがクリックされたときのコールバック関数。 |
タイトル、コンテンツ、および確認ボタンを含むアラートを開きます:
mdui.alert(text, onConfirm, options)mdui.alert(text, title, onConfirm, options)// テキストのみ
mdui.alert('content');
// タイトルとテキストを含む
mdui.alert('content', 'title');
// コールバックを含む
mdui.alert('content', 'title', function() {
mdui.alert('確認ボタンがクリックされました');
});
// テキストとコールバックを含む
mdui.alert('content', function() {
mdui.alert('確認ボタンがクリックされました');
});text: テキストtitle: (オプション)タイトルonConfirm: (オプション)確認ボタンをクリックした時のコールバック。引数はダイアログのインスタンスです。options: (オプション)パラメーター。下の表を参照してください。| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
confirmText | string | ok | 確認ボタンのテキスト。 |
history | boolean | true | hashchange イベントをリッスンするかどうか。trueの場合、Androidの戻るキーやブラウザの戻るボタンでダイアログを閉じることができます。 |
modal | boolean | false | ダイアログをモーダルにするかどうか。falseの場合、ダイアログの外側の領域をクリックするとダイアログが閉じますが、それ以外の場合は閉じません。 |
closeOnEsc | boolean | true | Escキーを押したときにダイアログを閉じるかどうか。 |
closeOnConfirm | boolean | true | 確認ボタンを押したときにダイアログを閉じるかどうか。 |
タイトル、コンテンツ、確認ボタン、およびキャンセルボタンを含む確認ダイアログを開きます:
mdui.confirm(text, onConfirm, onCancel, options)mdui.confirm(text, title, onConfirm, onCancel, options)// テキストと確認コールバックを含む
mdui.confirm('content', function(){
mdui.alert('確認ボタンがクリックされました');
});
// テキスト、確認ボタン、およびキャンセルボタンのコールバックを含む
mdui.confirm('content',
function(){
mdui.alert('確認ボタンがクリックされました');
},
function(){
mdui.alert('キャンセルボタンがクリックされました');
}
);
// テキスト、タイトル、および確認ボタンのコールバックを含む
mdui.confirm('content', 'title', function(){
mdui.alert('確認ボタンがクリックされました');
});
// テキスト、タイトル、確認ボタン、およびキャンセルボタンのコールバックを含む
mdui.confirm('content', 'title',
function(){
mdui.alert('確認ボタンがクリックされました');
},
function(){
mdui.alert('キャンセルボタンがクリックされました');
}
);text: テキストtitle: (オプション)タイトルonConfirm: (オプション)確認ボタンをクリックした時のコールバック。引数はダイアログのインスタンスです。onCancel: (オプション)キャンセルボタンをクリックした時のコールバック。引数はダイアログのインスタンスです。options: (オプション)パラメーター。下の表を参照してください。| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
confirmText | string | ok | 確認ボタンのテキスト。 |
cancelText | string | cancel | キャンセルボタンのテキスト。 |
history | boolean | true | hashchange イベントをリッスンするかどうか。trueの場合、Androidの戻るキーやブラウザの戻るボタンでダイアログを閉じることができます。 |
modal | boolean | false | ダイアログをモーダルにするかどうか。falseの場合、ダイアログの外側の領域をクリックするとダイアログが閉じますが、それ以外の場合は閉じません。 |
closeOnEsc | boolean | true | Escキーを押したときにダイアログを閉じるかどうか。 |
closeOnCancel | boolean | true | キャンセルボタンを押したときにダイアログを閉じるかどうか。 |
closeOnConfirm | boolean | true | 確認ボタンを押したときにダイアログを閉じるかどうか。 |
ユーザーに入力を促すダイアログを開きます。これには、タイトル、コンテンツ、テキストフィールド、確認ボタン、およびキャンセルボタンが含まれます:
mdui.prompt(label, onConfirm, onCancel, options)mdui.prompt(label, title, onConfirm, onCancel, options)// 単一行テキストフィールド
mdui.prompt('これは単一行のテキストフィールドです',
function (value) {
mdui.alert('次のように入力されました:' + value + ', 確認ボタンがクリックされました');
},
function (value) {
mdui.alert('次のように入力されました:' + value + ', キャンセルボタンがクリックされました');
}
);
// 複数行テキストフィールド
mdui.prompt('これは複数行のテキストフィールドです',
function (value) {
mdui.alert('次のように入力されました:' + value + ', 確認ボタンがクリックされました');
},
function (value) {
mdui.alert('次のように入力されました:' + value + ', キャンセルボタンがクリックされました');
},
{
type: 'textarea'
}
);
// タイトルを含む
mdui.prompt('テキストを入力してください', 'title',
function (value) {
mdui.alert('次のように入力されました:' + value + ', 確認ボタンがクリックされました');
},
function (value) {
mdui.alert('次のように入力されました:' + value + ', キャンセルボタンがクリックされました');
}
);label: テキストフィールドのフローティングラベルのテキストtitle: (オプション)タイトルonConfirm: (オプション)確認ボタンをクリックした時のコールバック。2つの引数(テキストフィールドの値とダイアログのインスタンス)を持ちます。onCancel: (オプション)キャンセルボタンをクリックした時のコールバック。2つの引数(テキストフィールドの値とダイアログのインスタンス)を持ちます。options: (オプション)パラメーター。下の表を参照してください| パラメータ名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
confirmText | string | ok | 確認ボタンのテキスト |
cancelText | string | cancel | キャンセルボタンのテキスト |
history | boolean | true | hashchange イベントをリッスンするかどうか。trueの場合、Androidの戻るキーやブラウザの戻るボタンでダイアログを閉じることができます。 |
modal | boolean | false | ダイアログをモーダルにするかどうか。falseの場合、ダイアログの外側の領域をクリックするとダイアログが閉じますが、それ以外の場合は閉じません。 |
closeOnEsc | boolean | true | Escキーを押したときにダイアログを閉じるかどうか。 |
closeOnCancel | boolean | true | キャンセルボタンを押したときにダイアログを閉じるかどうか |
closeOnConfirm | boolean | true | 確認ボタンを押したときにダイアログを閉じるかどうか |
confirmOnEnter | boolean | false | Enterキーを押したときに onConfirm コールバック関数をトリガーします。 |
type | string | text | テキストフィールドのタイプ。
|
maxlength | int | 0 | 最大入力文字数 |
defaultValue | string | '' | テキストフィールドのデフォルト値 |