910e62b5创建于 1月15日历史提交
<!DOCTYPE html>
<!--
@WAIT-FOR:Ready
@EXECUTE-AND-WAIT-FOR:selectOption2()
@EXECUTE-AND-WAIT-FOR:selectOption3()
@EXECUTE-AND-WAIT-FOR:selectOption1()
@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 Select</title>
    <script type="module">
        import { injectImportMap, loadAndWaitForReady } from "./resources/utils.js";
        injectImportMap();

        const components = [
            "md-filled-select",
            "md-outlined-select",
            "md-select-option"
        ];

        loadAndWaitForReady(components, () => {
            const statusDiv = document.getElementById("status");
            const selects = [
                {
                    tag: "md-filled-select",
                    label: "Filled select",
                    id: "test-select",
                    options: [
                        { value: "option1", text: "Option 1" },
                        { value: "option2", text: "Option 2" },
                        { value: "option3", text: "Option 3" }
                    ]
                },
                {
                    tag: "md-outlined-select",
                    label: "Outlined select",
                    options: [
                        { value: "apple", text: "Apple" },
                        { value: "banana", text: "Banana", selected: true },
                        { value: "orange", text: "Orange" }
                    ]
                },
                {
                    tag: "md-filled-select",
                    label: "Required select",
                    required: true,
                    options: [
                        { value: "red", text: "Red" },
                        { value: "green", text: "Green" },
                        { value: "blue", text: "Blue" }
                    ]
                },
                {
                    tag: "md-outlined-select",
                    label: "Disabled select",
                    disabled: true,
                    options: [
                        { value: "disabled1", text: "Disabled Option 1" },
                        { value: "disabled2", text: "Disabled Option 2" }
                    ]
                }
            ];

            selects.forEach(selectInfo => {
                const select = document.createElement(selectInfo.tag);
                select.label = selectInfo.label;
                if (selectInfo.id) {
                    select.id = selectInfo.id;
                }
                if (selectInfo.required) {
                    select.required = true;
                }
                if (selectInfo.disabled) {
                    select.disabled = true;
                }
                selectInfo.options.forEach(optionInfo => {
                    const option = document.createElement("md-select-option");
                    option.value = optionInfo.value;
                    option.textContent = optionInfo.text;
                    if (optionInfo.selected) {
                        option.selected = true;
                    }
                    select.appendChild(option);
                });
                statusDiv.appendChild(select);
            });

            statusDiv.setAttribute("aria-label", "Ready");
        });
    </script>
</head>
<body>
    <div id="status" aria-label="Loading">
    </div>
</body>
<script>
    async function selectOption2() {
        const select = document.getElementById("test-select");
        if (select) {
            await select.updateComplete;
            select.value = "option2";
            await select.updateComplete;
            const statusDiv = document.getElementById("status");
            const statusText = document.createElement("div");
            statusText.textContent = "Option 2 Selected";
            statusDiv.appendChild(statusText);
            return "Option 2 Selected";
        }
        return "Failed to select Option 2";
    }

    async function selectOption3() {
        const select = document.getElementById("test-select");
        if (select) {
            await select.updateComplete;
            select.value = "option3";
            await select.updateComplete;
            const statusDiv = document.getElementById("status");
            const statusText = document.createElement("div");
            statusText.textContent = "Option 3 Selected";
            statusDiv.appendChild(statusText);
            return "Option 3 Selected";
        }
        return "Failed to select Option 3";
    }

    async function selectOption1() {
        const select = document.getElementById("test-select");
        if (select) {
            await select.updateComplete;
            select.value = "option1";
            await select.updateComplete;
            const statusDiv = document.getElementById("status");
            const statusText = document.createElement("div");
            statusText.textContent = "Option 1 Selected";
            statusDiv.appendChild(statusText);
            return "Option 1 Selected";
        }
        return "Failed to select Option 1";
    }
</script>
</html>