Select選擇框
下拉選擇框元件可在下拉選單中提供多種選項,方便使用者快速選取所需內容。
本頁面主要介紹 <mdui-select> 元件的使用方法,關於下拉選單項目的用法,請參見 <mdui-menu-item>。
使用方法
按需引入元件:
import 'mdui/components/select.js';
import 'mdui/components/menu-item.js';
按需引入元件的 TypeScript 型別:
import type { Select } from 'mdui/components/select.js';
import type { MenuItem } from 'mdui/components/menu-item.js';
使用範例:
<mdui-select value="item-1">
<mdui-menu-item value="item-1">Item 1</mdui-menu-item>
<mdui-menu-item value="item-2">Item 2</mdui-menu-item>
</mdui-select>支援多選
下拉選擇框預設為單選,<mdui-select> 元件的 value 值即為目前選取的 <mdui-menu-item> 的 value 值。
加上 multiple 屬性可讓下拉選擇框支援多選。此時 <mdui-select> 的 value 值為目前選取的 <mdui-menu-item> 的 value 值所組成的陣列。
注意:在支援多選時,<mdui-select> 的 value 值為陣列,只能透過 JavaScript 屬性來讀取和設定該值。
輔助文字
使用 label 屬性設定下拉選擇框上方的標籤文字。
使用 placeholder 屬性設定未選取值時的佔位文字。
使用 helper 屬性設定下拉選擇框底部的輔助文字。也可以使用 helper slot 來設定輔助文字。
唯讀模式
加上 readonly 屬性,可以將下拉選擇框設定為唯讀模式。
停用狀態
加上 disabled 屬性,即可停用下拉選擇框。
可清除
加上 clearable 屬性後,當下拉選擇框有值時,右側會出現一個清除按鈕。
也可以透過 clear slot 自訂清除按鈕。
下拉選單位置
透過 placement 屬性,你可以設定下拉選單的位置。
文字靠右對齊
加上 end-aligned 屬性,即可讓文字靠右對齊。
前後文字及圖示
透過設定 icon 和 end-icon 屬性,可以在下拉選擇框的左側和右側加入 Material Icons 圖示。你也可以透過 icon 和 end-icon slot 在下拉選擇框的左側和右側加入元素。
透過設定 prefix 和 suffix 屬性,可以在下拉選擇框的左側和右側加入文字。也可以透過 prefix 和 suffix slot 在下拉選擇框的左側和右側加入文字元素。這些文字只有在下拉選擇框取得焦點或有值時才會顯示。
API
屬性
| HTML 屬性 | JavaScript 屬性 | Reflect | 型別 | 預設值 |
|---|---|---|---|---|
variant | variant | 'filled' | 'outlined' | 'filled' | |
選擇框的樣式。可選值包括:
| ||||
multiple | multiple | boolean | false | |
是否支援多選 | ||||
name | name | string | '' | |
選擇框的名稱,將與表單資料一起送出 | ||||
value | value | string | string[] | '' | |
選擇框的值,將與表單資料一起送出。 如果未指定 | ||||
defaultValue | string | string[] | '' | ||
預設選取的值。在重設表單時,將重設為該預設值。該屬性只能透過 JavaScript 屬性設定 | ||||
label | label | string | - | |
標籤文字 | ||||
placeholder | placeholder | string | - | |
佔位符文字 | ||||
helper | helper | string | - | |
選擇框底部的說明文字。也可以透過 | ||||
clearable | clearable | boolean | false | |
是否可以清空選擇框 | ||||
clear-icon | clearIcon | string | - | |
當選擇框可清空時,顯示在選擇框右側的清空按鈕的 Material Icons 圖示名。也可以透過 | ||||
placement | placement | 'auto' | 'bottom' | 'top' | 'auto' | |
選擇框的位置。可選值包括:
| ||||
end-aligned | endAligned | boolean | false | |
文字是否右對齊 | ||||
prefix | prefix | string | - | |
選擇框的前綴文字。僅在聚焦狀態,或選擇框有值時才會顯示。也可以透過 | ||||
suffix | suffix | string | - | |
選擇框的後綴文字。僅在聚焦狀態,或選擇框有值時才會顯示。也可以透過 | ||||
icon | icon | string | - | |
選擇框的前綴圖示的 Material Icons 圖示名。也可以透過 | ||||
end-icon | endIcon | string | - | |
選擇框的後綴圖示的 Material Icons 圖示名。也可以透過 | ||||
error-icon | errorIcon | string | - | |
表單欄位驗證失敗時,顯示在選擇框右側的 Material Icons 圖示名。也可以透過 | ||||
form | form | string | - | |
關聯的 若未指定此屬性,則該元素必須是 | ||||
readonly | readonly | boolean | false | |
是否為唯讀狀態 | ||||
disabled | disabled | boolean | false | |
是否為停用狀態 | ||||
required | required | boolean | false | |
送出表單時,是否必須填寫該欄位 | ||||
validity | ValidityState | - | ||
表單驗證狀態物件,具體參見 | ||||
validationMessage | string | - | ||
如果表單驗證未通過,此屬性將包含提示資訊。如果驗證通過,此屬性將為空字串 | ||||
autofocus | autofocus | boolean | false | |
是否在頁面載入完成後自動取得焦點 | ||||
tabindex | tabIndex | number | - | |
元素在使用 Tab 鍵切換焦點時的順序 | ||||
方法
| 名稱 | 參數 | 回傳值 |
|---|---|---|
checkValidity | boolean | |
檢查表單欄位是否通過驗證。如果未通過,回傳 | ||
reportValidity | boolean | |
檢查表單欄位是否通過驗證。如果未通過,回傳 如果驗證未通過,還會在元件上顯示驗證失敗的提示。 | ||
setCustomValidity |
| void |
設定自訂的錯誤提示文字。只要這個文字不為空,就表示欄位未通過驗證 | ||
click | void | |
模擬滑鼠點擊元素 | ||
focus |
| void |
將焦點設定到目前元素。 可以傳入一個物件作為引數,該物件的屬性包括:
| ||
blur | void | |
移除目前元素的焦點 | ||
Slots
| 名稱 |
|---|
| 預設 |
|
icon |
左側圖示 |
end-icon |
右側圖示 |
error-icon |
驗證失敗狀態的右側圖示 |
prefix |
左側文字 |
suffix |
右側文字 |
clear-button |
清空按鈕 |
clear-icon |
清空按鈕中的圖示 |
helper |
底部的說明文字 |
CSS Parts
| 名稱 |
|---|
chips |
多選時,放置選取值對應的 chip 的容器 |
chip |
多選時,每一個選取的值對應的 chip |
chip__button |
chip 內部的 |
chip__label |
chip 內部的文字 |
chip__delete-icon |
chip 內部的刪除圖示 |
text-field |
文字欄位,即 |
text-field__container |
text-field 內部的文字欄位容器 |
text-field__icon |
text-field 內部的左側圖示 |
text-field__end-icon |
text-field 內部的右側圖示 |
text-field__error-icon |
text-field 內部的驗證失敗狀態的右側圖示 |
text-field__prefix |
text-field 內部的左側文字 |
text-field__suffix |
text-field 內部的右側文字 |
text-field__label |
text-field 內部的標籤文字 |
text-field__input |
text-field 內部的 |
text-field__clear-button |
text-field 內部的清空按鈕 |
text-field__clear-icon |
text-field 內部的清空按鈕中的圖示 |
text-field__supporting |
text-field 內部的底部輔助資訊容器,包括 helper 和 error |
text-field__helper |
text-field 內部的底部說明文字 |
text-field__error |
text-field 內部的底部錯誤描述文字 |
menu |
下拉選單,即 |