910e62b5创建于 1月15日历史提交
<!DOCTYPE html>
<!--
@WAIT-FOR:Ready
@EXECUTE-AND-WAIT-FOR:activateFirstItem()
@EXECUTE-AND-WAIT-FOR:activateThirdItem()
@BLINK-ALLOW:htmlTag*
@BLINK-ALLOW:className*
-->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Material Web List</title>
    <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet">
    <script type="module">
        import { injectImportMap, loadAndWaitForReady } from "./resources/utils.js";
        injectImportMap();

        const components = [
            "md-list",
            "md-list-item",
            "md-icon"
        ];

        loadAndWaitForReady(components, () => {
            const statusDiv = document.getElementById("status");
            const list = document.createElement("md-list");
            const items = [
                { headline: "Single line item", id: "test-item-1" },
                {
                    headline: "Item with icon",
                    supportingText: "Supporting text",
                    startIcon: "star"
                },
                {
                    headline: "Item with end icon",
                    supportingText: "More supporting text",
                    endIcon: "arrow_forward",
                    id: "test-item-3"
                },
                {
                    headline: "Multi-line item",
                    supportingText: "This item has multiple lines of supporting text to demonstrate the layout",
                    startIcon: "folder",
                    endIcon: "more_vert"
                },
                {
                    headline: "Disabled item",
                    supportingText: "This item is disabled",
                    disabled: true,
                    startIcon: "block"
                }
            ];
            items.forEach(itemInfo => {
                const item = document.createElement("md-list-item");
                item.headline = itemInfo.headline;
                if (itemInfo.id) {
                    item.id = itemInfo.id;
                }
                if (itemInfo.supportingText) {
                    item.setAttribute("supporting-text", itemInfo.supportingText);
                }
                if (itemInfo.startIcon) {
                    const icon = document.createElement("md-icon");
                    icon.slot = "start";
                    icon.textContent = itemInfo.startIcon;
                    item.appendChild(icon);
                }
                if (itemInfo.endIcon) {
                    const icon = document.createElement("md-icon");
                    icon.slot = "end";
                    icon.textContent = itemInfo.endIcon;
                    item.appendChild(icon);
                }
                if (itemInfo.disabled) {
                    item.disabled = true;
                }
                list.appendChild(item);
            });
            statusDiv.appendChild(list);
            statusDiv.setAttribute("aria-label", "Ready");
        });
    </script>
</head>
<body>
    <div id="status" aria-label="Loading">
    </div>
</body>
<script>
    async function activateFirstItem() {
        const item = document.getElementById("test-item-1");
        if (item) {
            item.dispatchEvent(new Event("request-activation", { bubbles: true }));
            await item.updateComplete;
            const statusDiv = document.getElementById("status");
            const statusText = document.createElement("div");
            statusText.textContent = "List Item 1 Activated";
            statusDiv.appendChild(statusText);
            return "List Item 1 Activated";
        }
        return "Failed to activate List Item 1";
    }

    async function activateThirdItem() {
        const item = document.getElementById("test-item-3");
        if (item) {
            item.dispatchEvent(new Event("request-activation", { bubbles: true }));
            await item.updateComplete;
            const statusDiv = document.getElementById("status");
            const statusText = document.createElement("div");
            statusText.textContent = "List Item 3 Activated";
            statusDiv.appendChild(statusText);
            return "List Item 3 Activated";
        }
        return "Failed to activate List Item 3";
    }
</script>
</html>