Select
MSK Select는 커스텀 단일 선택 드롭다운(listbox) primitive입니다.
네이티브 <select> 대신 테마/키보 드 내비게이션을 통제할 수 있습니다.
Preview
Data API
<div data-msk-select data-value="">
<button type="button" data-msk-select-trigger>
<span data-msk-select-label data-msk-select-placeholder="선택">선택</span>
</button>
<input type="hidden" name="color" data-msk-select-input>
<ul data-msk-select-listbox>
<li data-msk-select-option data-value="red">빨강</li>
<li data-msk-select-option data-value="green">초록</li>
</ul>
</div>
JavaScript API
window.MSK.ui.select.setValue(root, 'green');
window.MSK.ui.select.open(root);
window.MSK.ui.select.close(root);
Events
root.addEventListener('msk:select-change', (event) => {
console.log(event.detail.value);
});
Accessibility
- Trigger는
aria-haspopup="listbox"+aria-expanded, listbox는role="listbox", 항목은role="option"+aria-selected를 동기화합니다. - 키보드:
↓/Enter/Space로 열기,↑/↓/Home/End로 이동,Enter/Space로 선택,Esc로 닫기. - 바깥 클릭과
resize시 자동으로 닫힙니다.