Combobox
MSK Combobox는 입력으로 항목을 필터링하는 검색형 선택 primitive입니다. 옵션이 많을 때 Select 대신 사용합니다.
Preview
Data API
<div data-msk-combobox data-value="">
<input type="text" data-msk-combobox-input placeholder="국가 검색">
<input type="hidden" name="country" data-msk-combobox-value>
<ul data-msk-combobox-listbox>
<li data-msk-combobox-option data-value="kr">대한민국</li>
<li data-msk-combobox-option data-value="jp">일본</li>
<li data-msk-combobox-empty hidden>검색 결과 없음</li>
</ul>
</div>
data-msk-combobox-search 속성으로 항목별 검색 대상 텍스트를 따로 지정할 수 있습니다.
JavaScript API
window.MSK.ui.combobox.setValue(root, 'kr');
window.MSK.ui.combobox.open(root);
window.MSK.ui.combobox.close(root);
Events
root.addEventListener('msk:combobox-input', (event) => console.log(event.detail.query));
root.addEventListener('msk:combobox-change', (event) => console.log(event.detail.value));
Accessibility
- 입력은
role="combobox"+aria-autocomplete="list"+aria-expanded, 목록은role="listbox", 항목은role="option"입니다. - 키보드:
↓로 열기/이동,↑로 이동,Enter로 강조 항목 선택,Esc로 닫기. - 일치 항목이 없으면
data-msk-combobox-empty요소가 표시됩니다.