Dialog對話框
按需引入元件:
import 'mdui/components/dialog.js';
按需引入元件的 TypeScript 型別:
import type { Dialog } from 'mdui/components/dialog.js';
使用範例:
Dialog
關閉
開啟對話框
<mdui-dialog class="example-dialog">
Dialog
<mdui-button>關閉</mdui-button>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-dialog");
const openButton = dialog.nextElementSibling;
const closeButton = dialog.querySelector("mdui-button");
openButton.addEventListener("click", () => dialog.open = true);
closeButton.addEventListener("click", () => dialog.open = false);
</script>
加上 close-on-overlay-click 屬性,點擊遮罩層時即會關閉對話框。
Dialog
開啟對話框
<mdui-dialog close-on-overlay-click class="example-overlay">Dialog</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-overlay");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼
加上 close-on-esc 屬性,按下 ESC 鍵時即會關閉對話框。
Dialog
開啟對話框
<mdui-dialog
close-on-esc
close-on-overlay-click
class="example-esc"
>Dialog</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-esc");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼
加上 fullscreen 屬性,對話框會以全螢幕顯示。
Dialog
關閉
開啟對話框
<mdui-dialog fullscreen class="example-fullscreen">
Dialog
<mdui-button>關閉</mdui-button>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-fullscreen");
const openButton = dialog.nextElementSibling;
const closeButton = dialog.querySelector("mdui-button");
openButton.addEventListener("click", () => dialog.open = true);
closeButton.addEventListener("click", () => dialog.open = false);
</script>
原始碼
設定 icon 屬性,對話框上方會加入 Material Icons 圖示。
Dialog
開啟對話框
<mdui-dialog
icon="restart_alt"
close-on-overlay-click
class="example-icon"
>Dialog</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-icon");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼也可以透過 icon slot 在對話框上方加入圖示元素。
Dialog
開啟對話框
<mdui-dialog close-on-overlay-click class="example-icon-slot">
Dialog
<mdui-icon slot="icon" name="restart_alt"></mdui-icon>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-icon-slot");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼
你可以透過 headline 和 description 屬性設定對話框的標題和描述。
開啟對話框
<mdui-dialog
headline="Delete selected images?"
description="Images will be permanently removed from your account and all synced devices."
close-on-overlay-click
class="example-headline"
></mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-headline");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼也可以透過 headline 和 description slot 來設定對話框的標題元素和描述元素。
Delete selected images?
Images will be permanently removed from your account and all synced devices.
開啟對話框
<mdui-dialog close-on-overlay-click class="example-headline-slot">
<span slot="headline">Delete selected images?</span>
<span slot="description">Images will be permanently removed from your account and all synced devices.</span>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-headline-slot");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼
你可以透過 action slot 加入底部操作按鈕。
取消
刪除
開啟對話框
<mdui-dialog
close-on-overlay-click
headline="Delete selected images?"
class="example-action"
>
<mdui-button slot="action" variant="text">取消</mdui-button>
<mdui-button slot="action" variant="tonal">刪除</mdui-button>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-action");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼加上 stacked-actions 屬性,可使底部操作按鈕垂直排列。
Turn on speed boost
No thanks
開啟對話框
<mdui-dialog
stacked-actions
close-on-overlay-click
headline="Use location service?"
class="example-stacked-actions"
>
<mdui-button slot="action" variant="text">Turn on speed boost</mdui-button>
<mdui-button slot="action" variant="text">No thanks</mdui-button>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-stacked-actions");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼
你可以透過 header slot 設定對話框頂部內容。
開啟對話框
<mdui-dialog close-on-overlay-click class="example-header">
<mdui-top-app-bar slot="header">
<mdui-button-icon icon="close"></mdui-button-icon>
<mdui-top-app-bar-title>Title</mdui-top-app-bar-title>
<mdui-button variant="text">Save</mdui-button>
</mdui-top-app-bar>
<div style="height: 100px"></div>
</mdui-dialog>
<mdui-button>開啟對話框</mdui-button>
<script>
const dialog = document.querySelector(".example-header");
const openButton = dialog.nextElementSibling;
openButton.addEventListener("click", () => dialog.open = true);
</script>
原始碼