μΉ κ΅¬μ± μμ μΈκ³μμμ²λΌ 보μ΄λλ‘ μ ν/콀보λ°μ€μ λν APIλ₯Ό ꡬμνλ λ°©λ²μ μ°κ΅¬ν΄μΌ ν©λλ€.
μ ν μμ λλ 콀보 μμλ μ μ¬μ μΌλ‘ λμΌν κ΅¬μ± μμμΌ μ μμ§λ§ λΆλ¦¬νκ³ μΆμ μλ μμ΅λλ€. μ΄κ²μ μμ§ λ§μ΄ λ―Έμ μ λλ€.
콀보 μμ/μ ν κ΅¬μ± μμμ λν λ€μν κ΅¬μ± μμ λΌμ΄λΈλ¬λ¦¬/μ€κ³ μμ€ν μ κ·Ό λ°©μμ λΉκ΅νκ³ μλν API μ μμ μκ°ν΄ 보μΈμ.
μΌλΆ μ μ¬μ 리μμ€:
μ΅μ
μ κ°μνλ νμ μ¬νμ΄ λ κ²μμ λͺ
μ¬νμμμ€. μ΄κ²μ μΉ κ΅¬μ± μμ κ³μΈ΅μμ μ²λ¦¬ν΄μΌ νλ κ²μ
λκΉ μλλ©΄ μλΉμκ° μ μ¬μ μΈ νλ μμν¬ κ³μΈ΅μμ μ²λ¦¬ν΄μΌ νλ κ²μ
λκΉ?
μ΅μ
μ λν κ°μ μ€ν¬λ‘€μ μ¬μ©νμ¬ Angular μ€μ μμ μμ μΉ κ΅¬μ± μμ μ€ νλλ₯Ό μ¬μ©νμ¬ ν
μ€νΈνκ³ μ‘°μ¬ν©λλ€.
μΉ κ΅¬μ± μμμμλ λ°μ λ° κ°μνλ₯Ό μ¬μ©ν΄ 보μμμ€.
μ°λ¦¬κ° μ΄κ²μ μ€μ€λ‘ μ²λ¦¬νκΈ°λ‘ κ²°μ νλ€λ©΄ - μΌλ¨ μμ±λ μ΅μ μ λν 컨ν μ€νΈλ₯Ό μ€μ νλ ν νλ¦Ώ λ©μ»€λμ¦μ ꡬμΆνλ κ²μ΄ μ°λ¦¬κ° ν΄μΌ ν μΌμ λλ€.
μ΄μ κ°μ κ²μ λ¬μ±νλ λ°©λ²μ λν μΌλΆ 리μμ€λ microsoft-graph-toolkitμΌ μ μμ΅λλ€.
μ΄ λ¬Έμ μ κ²°κ³Όλ μ°λ¦¬κ° μμΌλ‘ λμκ° λ°©λ²μ λν΄ μ 보μ μ κ°ν κ²°μ μ λ΄λ¦΄ μ μλλ‘ μ°λ¦¬μ μ΅μ κ³Ό μ°¬λ° μλ‘ μ λν κ°μμ¬μΌ ν©λλ€.
콀보 μμμ λν API μμ΄λμ΄μ λν΄ @heartdisease μ λκΈ°ννμμμ€. κ·Έλ Angularμ λν νμ¬ μ€ν λ²μ μ κ°μ νκ³ μμ΅λλ€.
μ¬λ‘―μ μ 곡λ μ£Όμ΄μ§ 컨ν
μ€νΈμ ν
νλ¦Ώ μ μ¬μ©νμ¬ μ½€λ³΄ μμ νλͺ©μ μμ±νκΈ° μν΄
μ΄ λ¦¬ν¬μ§ν 리μ ν
μ€νΈλ₯Ό μ
λ‘λνμ΅λλ€.
λ°λΌμ νλͺ© λͺ©λ‘μ μ λ¬νκ³ (μ ν μ¬ν) ν νλ¦Ώμ 콀보 μμμ μ λ¬νκ³ μ€ν¬λ‘€ μμΉμ λμ΄μ λ°λΌ xκ° νλͺ©λ§ λ λλ§νλλ‘ νλͺ©μ μ€μ λ‘ λ λλ§νκΈ° μ μ κ°μνλ₯Ό "κ·Έλ₯" μΆκ°νλ κ²μ΄ μ’μ΅λλ€. μ€λ²λ μ΄ μ»¨ν μ΄λ.
νμ¬ TemplateHelper.renderTemplate()
λ©μλλ HTMLElementλ₯Ό λ£¨νΈ λ
Έλ, ν
νλ¦Ώ λ° μ»¨ν
μ€νΈ(λ° μ νμ μΆκ° 컨ν
μ€νΈ)λ‘ νμ©ν©λλ€. μ£Όμ΄μ§ ν
νλ¦Ώμ λ°λΌ λͺ¨λ λ
Έλλ₯Ό μμ±νκ³ λ£¨νΈ λ
Έλμ μ°κ²°ν©λλ€.
μ΄ λμμ λ³κ²½νκ³ λ©μλκ° ν
νλ¦Ώκ³Ό 컨ν
μ€νΈλ§ μλ½νκ³ μ»΄νμΌλ ν
νλ¦Ώμ λ°ννλλ‘ ν λ€μ λ°νλ HTMLμ κ΅¬μ± μμμ μ‘°λͺ
ν
νλ¦Ώμμ μ§μ μΆλ ₯ν μ μλλ‘ νλ κ²μ΄ λ λμ μ μμ΅λλ€.
μ΄λ»κ² μκ°ν΄?
ToDo
λ‘λ© μ€νΌλλ μ΄λμ νμλμ΄μΌ ν©λκΉ?μ΄μ μ΄ λ§μΆ°μ§λ©΄ Enter
, ArrowUp
λλ ArrowDown
ν€λ₯Ό λλ₯΄κ±°λ μ¬μ©μκ° μ
λ ₯ νλμ νν°λ₯Ό μ
λ ₯νκΈ° μμν λ 콀보 μμκ° μ΄λ¦½λλ€.
μ΄λ¦¬λ©΄ μ¬μ©μλ ArrowUp
/ ArrowDown
ν€λ₯Ό μ¬μ©νμ¬ κΈ°μ‘΄ μ΅μ
μμ μ νν μ μμ΄μΌ ν©λλ€. νν° μ
λ ₯μ λν μ΄μ μ μ
λ ₯ νλμ λ¨μ μμ΄μΌ νλ©° μ΅μ
μ νν μ μμ΄μΌ ν©λλ€. μ΅μ
μ μ ν μνλ aria-selected
μμ±μ μ¬μ©νμ¬ νμλμ΄μΌ ν©λλ€.
Enter
ν€λ₯Ό μ¬μ©νμ¬ μ ν νλͺ©μ μ μΆν΄μΌ ν©λλ€.
Tab
λλ Escape
ν€λ₯Ό λλ₯΄λ©΄ μ€λ²λ μ΄κ° λ«νκ³ μ νν νλͺ©μ΄ λ³κ²½λμ§ μμμΌ ν©λλ€.
νν°λ₯Ό μ λ ₯ν λ€μ μ λ ₯ νλ λ°μΌλ‘ νμ μ΄λνλ©΄ νν°κ° μ¬μ€μ λκ³ μ΄μ μ μ νν νλͺ©μ΄ νμλμ΄μΌ ν©λλ€.
μ¬μ©μλ ν νλ¦Ώ λΆλΆμ μ¬λ λ¬Έμμ΄κ³Ό λ«λ λ¬Έμμ΄μ μ 곡ν΄μΌ ν©λλ€. μ΄λ μ μ λλ κ΅¬μ± μμλ³ μμ€μμ κ°λ₯ν΄μΌ ν©λλ€(μμ§ κ²°μ λμ§ μμ).
κΈ°λ³Έκ°μ {{
λ° }}
μ
λλ€.
_WIP_
ComboBoxλ κΈ°λ³Έ FluidComboBox
κ΅¬μ± μμ, FluidComboBoxOptionsList
κ΅¬μ± μμ λ° FluidComboBoxOption
κ΅¬μ± μμλ‘ λΆν λμ΄μΌ ν©λλ€.
FluidComboBoxOptionsList
λ₯Ό ν¬ν¨νλ©°, μ¬κΈ°μλ μ°¨λ‘λ‘ FluidComboBoxOption
κ° ν¬ν¨λ©λλ€.
μ€λ²λ μ΄ μ΄κΈ° λ° λ«κΈ° λ° μ€λ²λ μ΄ μμΉ μ§μ μ μ²λ¦¬ν©λλ€.
κΈ°λ³Έ HTMLElement
sλ₯Ό νμ©νλ νμ μμλ‘ ν
νλ¦Ώμ νμ©ν©λλ€.
ν νλ¦Ώμ μ 곡ν λ ν νλ¦Ώ λ°μΈλ©μ μ¬μ©λλ μ¬λ λ¬Έμμ΄κ³Ό λ«λ λ¬Έμμ΄μ μ€μ ν΄μΌ ν©λλ€.
| μ΄λ¦ | μμ | μ ν | κΈ°λ³Έκ° | μ€λͺ
|
| -------------- | ----------- | -------- | ------- | -------------------------------------------------- ------------------------------ |
| μ΅μ
| MVP | λ°°μ΄ | [] | FluidComboBoxOptionsList
μ νμν μ΅μ
λ°°μ΄ |
| νν°Fn | MVP | (option: T) => boolean
| null
| νν°λ§ μ΅μ
μ μ¬μ©λλ κΈ°λ₯ |
| λ λμ΅μ
Fn | MVP | (option: T) => string
| null
| μλ μμ± ν¨λμμ μ΅μ
μ λ λλ§νλ λ° μ¬μ©λλ κΈ°λ₯ |
| μ리 νμμ | MVP | λ¬Έμμ΄ | '' | μ΅μ
μ΄ μ νλμ§ μμ κ²½μ° μ
λ ₯ νλμ νμν μ리 νμμ |
| μ₯μ μΈ | MVP | λΆμΈ | κ±°μ§ | 콀보 μμκ° λΉνμ±νλμλμ§ μ¬λΆλ₯Ό νμΈνλ λΆμΈ |
| λ‘λ© | MVP | λΆμΈ | κ±°μ§ | λ‘λ© νμκΈ°λ₯Ό νμν μ§ μ¬λΆλ₯Ό κ²°μ νλ λΆμΈ |
| μ ν | MVP | μ΄λ€ | λ | μ¬μ μ ν νλͺ© |
| λ€μ€ μ ν | v2 | λΆμΈ | κ±°μ§ | λ μ΄μμ μ΅μ
μ λμμ μ νν μ μλμ§ μ¬λΆλ₯Ό κ²°μ νλ λΆμΈ |
| μ΄λ¦ | μμ | μ ν | μ€λͺ
|
| ---------------- | ----------- | ---------------------------------- | -------------------------------------------------- ---- |
| λ³κ²½ | MVP | FluidComboBoxChangeEvent | κ°μ΄ λ³κ²½λ λ λ°μνλ μ΄λ²€νΈ |
| νν° κ΅ν | MVP | FluidComboBoxFilterChangeEvent | μ¬μ©μκ° νν°λ§ κ°μ μ
λ ₯νλ©΄ λ°μνλ μ΄λ²€νΈ |
| μ ν λ³κ²½ | MVP | FluidComboBoxSelectionChangeEvent | μ νν μ΅μ
μ΄ λ³κ²½λ λ λ°μνλ μ΄λ²€νΈ |
FluidComboBoxμ μ μ 쑰건μΌλ‘ μ¬μ¬μ© κ°λ₯ν λ‘λ© μ€νΌλ κ΅¬μ± μμλ₯Ό λ¨Όμ ꡬνν΄μΌ ν©λλ€.
ToDo
μλ‘μ΄ λ‘λ© μ€νΌλμ L&Fμ λν΄ UXμ λ¬Έμνμμμ€(λλ μ΄μ λμμΈμ μ¬μ¬μ©ν μ μλμ§ μ¬λΆ).
FluidComboBoxμ μ μ 쑰건μΌλ‘ κ°μ μ€ν¬λ‘€μ ꡬννλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό ꡬνν΄μΌ ν©λλ€.
λ€μμ μμ΄ν
μ΄ μλ 콀보λ°μ€λ₯Ό μ¬μ©ν μ μλλ‘ νκΈ° μν¨μ
λλ€.
λν보μμμ€:
https://github.com/WICG/virtual-scroller/blob/master/README.md
https://www.sitepen.com/blog/next-generation-virtual-scrolling/
https://dev.to/adamklein/build-your-own-virtual-scroll-part-i-11ib
https://blog.logrocket.com/virtual-scrolling-core-principles-and-basic-implementation-in-react/
FluidComboBoxμ μ μ 쑰건μΌλ‘ λ°°μΉν μ μλ μ¬μ¬μ© κ°λ₯ν νμ€λ² κ΅¬μ± μμλ₯Ό ꡬνν΄μΌ ν©λλ€.
콀보 μμμ μ
λ ₯ μμ μλμ μλ²½νκ² μμ΅λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬λ ν΄λΉ κ΅¬μ± μμλ₯Ό ꡬννλ λ° μ¬μ©ν΄μΌ ν©λλ€.
https://popper.js.org/docs/v2/
ν νλ¦Ώκ³Ό κ΄λ ¨νμ¬ κ°λ°μκ° ν μ€νΈ κ΅μ²΄λ§ κ°μ§ μ μλ μ μ°μ±μ΄ μκ³ κ΄λ²μνμ§ μκΈ° λλ¬Έμ λͺ κ°μ§ μ°λ €κ° μμ΅λλ€. κΈ°λ₯μ ν΅ν ν μ€νΈ λ³νμ΄λ λΆκ°λ₯νμ§λ§ νμν κ²½μ°μ κ°μ κ°λ¨ν 쑰건μ λν΄ μκ°ν΄λ³΄μμμ€.
λ΄ μ κ·Ό λ°©μμ μΆκ°ν μ μλ DocumentFragmentμ λ£μ μ μλ HTML λ¬Έμμ΄μ λ°ννλ ν¨μλ₯Ό μμ±νλ κ²μ λλ€.
μ°κΈ° κΈ°λ₯μ μ¬μ©νλ©΄ λ³ν λλ 쑰건μ μμ ν μ μ°μ±μ μ»μ μ μμ΅λλ€.
μ΄λ₯Ό μν κ°λ¨ν μ½μΌνΈλ₯Ό μ 곡νκΈ° μν΄ μ»΄νμΌμ΄ νμνμ§ μλλ‘ λ¬Έμμ΄λ‘ λ λλ§ν μ μλ JSX htm κ³Ό μ μ¬ν κ²μ νμ©ν μ μμ΅λλ€. κ·Έκ²μ λν μ°λ¦¬κ° ~700Bytesμ λν΄ μ΄μΌκΈ°νλ λ§€μ° μ΅μνμ 곡κ°μ κ°μ§κ³ μμ΅λλ€.
κ·Έλ° λ€μ μ΄λ»κ² λ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
<script type="text/template">
html`
<span>${text}</span>
{count > 0
<span>occurrences ${count}</span>
}
</div>
`;
</script>
import { render } from "preact-render-to-string";
const template = document.createElement('template');
template.innerHTML = render(option); // option is the script that can be passed via slot or input
const fragment = temp.content;
λλ νκ·Έκ° μ§μ λ ν νλ¦Ώ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templatesλ₯Ό μ¬μ©ν μ
μ΄κ²μ μλ§λ λ μ΅μνμ μ루μ μ΄ λ κ²μ λλ€.
λλ λͺ κ°μ§ ν μ€νΈλ₯Ό μννμΌλ©° λΆννλ Angularλ ν νλ¦Ώμμ λͺ¨λ μ€ν¬λ¦½νΈ νκ·Έλ₯Ό μ κ±°ν©λλ€. ν νλ¦Ώ λ΄μμ μ€ν¬λ¦½νΈλ₯Ό μ μΈνλ λ° λλ λΉμ©μ λ¨ 2μΌνΈμ λλ€.
Comboboxμ ν νλ¦Ώμ λ λλ§νλ λ°©λ²μ λν ν¨μλ₯Ό μ 곡ν μ μλ μ λ ₯μ΄ μλλ‘ ν¨μ μ°μ μ κ·Ό λ°©μμ μ¬μ©νκ² μ΅λλ€.
μμ±μΌλ‘ LitElementsμ κΈ°λ₯μ μ 곡ν μ μμ΅λκΉ? κ·Έλ¬λ©΄ λλ μ΄ ν¨μμμ μλ°μ€ν¬λ¦½νΈμ λͺ¨λ μ μ°μ±μ κ°μ§κ³ μλ μλΉμμκ² λ λλ§μ μ λ¬ν κ²μ΄κΈ° λλ¬Έμ λλ€. ν¨μλ 맀κ°λ³μ(ν νλ¦Ώμ λν μ λ ₯)λ₯Ό μ μΈνμΌλ©° λ¬Έμμ΄μ λ°νν΄μΌ ν©λλ€.
κΈ°λ³Έ ꡬνμ λ€μκ³Ό κ°μ΄ μνν μ μμ΅λλ€.
_defaultTemplate<T>(display: string, value: T): string {
return `<option>${display}</option>`
}
#1513μμ λ Όμν κ²μ²λΌ νμ€λ²λ₯Ό μ μ νκ² μ²λ¦¬ν΄μΌ ν©λλ€.
λλ μ΄κ²μ΄ 콀보 μμ κ΅¬μ± μμμ μΌλΆμΈ μ λ ₯μ λν΄ λ ΌμνκΈ°μ μ μ ν μ₯μμΈμ§ νμ€νμ§ μμ΅λλ€. κ·Έλ¬λ μ λ ₯μ΄ μ΄μ μ λ°λΌ 컀μ§κΈ° λλ¬Έμ μ λ ₯ κ΅¬μ± μμμ μμλ₯Ό νμ₯νμ¬ κ°μ₯ ν° μνμ 곡κ°μ μ°¨μ§νλ κ²μ΄ ν©λ¦¬μ μ΄λΌκ³ μκ°ν©λλ€. κ°μ§λ€.
νμ¬ μ λ ₯μ μ΄μ μ΄ λ§μΆ°μ§λ©΄ λλΉκ° 16px μ¦κ°ν©λλ€. λ°λΌμ λ μ΄λΈ + μ λ ₯μ ν¨λ© 8λ§νΌ μ΄λνλ κ²μ΄ μ’μ΅λλ€. μ΄λ μ¬λ¬ 컨νΈλ‘€(μ λ ₯, μ ν, ...)μ΄ μΈλ‘ νμ λ μ΄μμμ μλ κ²½μ° λͺ¨λ 컨νΈλ‘€μ λͺ¨λ λ μ΄λΈμ΄ λ€μκ³Ό κ°μμΌ ν¨μ μλ―Έν©λλ€. μ λ ¬. λ μ΄λΈ + μ λ ₯μ κ°κ²©μ ν΅ν©νλ μμ 컨νΈλ‘€μ΄ μλ―Έκ° μμ μ μμ΅λλ€.
νμ¬ μ ν μ΅μ μ λν νμ λ¬Έμμ΄μ λ λλ§νκΈ° μν μ μ λ ₯μ μΆκ°νμ¬ μ μμ μμ νκ³ μΆμ΅λλ€.
| μ΄λ¦ | μμ | μ ν | κΈ°λ³Έκ° | μ€λͺ
|
| -------------- | ----------- | -------- | ------- | -------------------------------------------------- ------------------------------ |
| displayNameFn | MVP | (option: T) => string
| (μ΅μ
) => `${μ΅μ
}` | μ£Όμ΄μ§ μ΅μ
μ λν νμ λ¬Έμμ΄(HTML νμ© μ λ¨)μ λ°ννλ ν¨μμ
λλ€. |
μ΄κ²μ λν μ΄ λ¬Έμ μ λν μ¬μ΄ ν΄κ²°μ± μ μ 곡ν©λλ€: #1527
λ΄κ° μ€μνλ€κ³ μκ°νλ μμ κ²: νμ¬ DtComboboxλ μ΅μ
μ value
λ₯Ό κΈ°λ³Έ "μ νλ μ΅μ
" νμ ν
μ€νΈλ‘ μ¬μ©ν©λλ€. μ΅μ
μ textContent
λ₯Ό μ¬μ©νλ κ²μ΄ ν¨μ¬ λ ν©λ¦¬μ μ΄λΌκ³ μκ°ν©λλ€.
1) textContent
λ νμ UI μΉνμ μΈ κ°μ
λλ€( value
λ λλλ‘ UI μΉνμ μΈ κ°μ)
2) textContent
λ₯Ό μ¬μ©νλ κ²μ νμ€ select
κ° νλ μΌμ
λλ€.
μΉ κ΅¬μ± μμλ ν₯ν κ΅¬μ± μμλ₯Ό λ§λ€κ³ μ νλ λ°©μμ΄ μλλ―λ‘ νμ μ°μ μμ μ΄λκ³Ό κ΄λ ¨μ΄ μμΌλ―λ‘ μ΄ λ¬Έμ λ₯Ό μ’ λ£ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μꡬ μ¬ν
λ€μ λ¨κ³ μꡬ μ¬ν
ToDo
λ‘λ© μ€νΌλλ μ΄λμ νμλμ΄μΌ ν©λκΉ?μ κ·Όμ±
μ΄μ μ΄ λ§μΆ°μ§λ©΄
Enter
,ArrowUp
λλArrowDown
ν€λ₯Ό λλ₯΄κ±°λ μ¬μ©μκ° μ λ ₯ νλμ νν°λ₯Ό μ λ ₯νκΈ° μμν λ 콀보 μμκ° μ΄λ¦½λλ€.μ΄λ¦¬λ©΄ μ¬μ©μλ
ArrowUp
/ArrowDown
ν€λ₯Ό μ¬μ©νμ¬ κΈ°μ‘΄ μ΅μ μμ μ νν μ μμ΄μΌ ν©λλ€. νν° μ λ ₯μ λν μ΄μ μ μ λ ₯ νλμ λ¨μ μμ΄μΌ νλ©° μ΅μ μ νν μ μμ΄μΌ ν©λλ€. μ΅μ μ μ ν μνλaria-selected
μμ±μ μ¬μ©νμ¬ νμλμ΄μΌ ν©λλ€.Enter
ν€λ₯Ό μ¬μ©νμ¬ μ ν νλͺ©μ μ μΆν΄μΌ ν©λλ€.Tab
λλEscape
ν€λ₯Ό λλ₯΄λ©΄ μ€λ²λ μ΄κ° λ«νκ³ μ νν νλͺ©μ΄ λ³κ²½λμ§ μμμΌ ν©λλ€.νν°λ₯Ό μ λ ₯ν λ€μ μ λ ₯ νλ λ°μΌλ‘ νμ μ΄λνλ©΄ νν°κ° μ¬μ€μ λκ³ μ΄μ μ μ νν νλͺ©μ΄ νμλμ΄μΌ ν©λλ€.
μ¬μ©μ μ μ ν νλ¦Ώ ꡬ문
μ¬μ©μλ ν νλ¦Ώ λΆλΆμ μ¬λ λ¬Έμμ΄κ³Ό λ«λ λ¬Έμμ΄μ μ 곡ν΄μΌ ν©λλ€. μ΄λ μ μ λλ κ΅¬μ± μμλ³ μμ€μμ κ°λ₯ν΄μΌ ν©λλ€(μμ§ κ²°μ λμ§ μμ).
κΈ°λ³Έκ°μ
{{
λ°}}
μ λλ€.API μ μ
_WIP_
ComboBoxλ κΈ°λ³Έ
FluidComboBox
κ΅¬μ± μμ,FluidComboBoxOptionsList
κ΅¬μ± μμ λ°FluidComboBoxOption
κ΅¬μ± μμλ‘ λΆν λμ΄μΌ ν©λλ€.FluidComboBox
FluidComboBoxOptionsList
λ₯Ό ν¬ν¨νλ©°, μ¬κΈ°μλ μ°¨λ‘λ‘FluidComboBoxOption
κ° ν¬ν¨λ©λλ€.μ€λ²λ μ΄ μ΄κΈ° λ° λ«κΈ° λ° μ€λ²λ μ΄ μμΉ μ§μ μ μ²λ¦¬ν©λλ€.
κΈ°λ³Έ
HTMLElement
sλ₯Ό νμ©νλ νμ μμλ‘ ν νλ¦Ώμ νμ©ν©λλ€.ν νλ¦Ώμ μ 곡ν λ ν νλ¦Ώ λ°μΈλ©μ μ¬μ©λλ μ¬λ λ¬Έμμ΄κ³Ό λ«λ λ¬Έμμ΄μ μ€μ ν΄μΌ ν©λλ€.
μ λ ₯
| μ΄λ¦ | μμ | μ ν | κΈ°λ³Έκ° | μ€λͺ |
| -------------- | ----------- | -------- | ------- | -------------------------------------------------- ------------------------------ |
| μ΅μ | MVP | λ°°μ΄ | [] |
FluidComboBoxOptionsList
μ νμν μ΅μ λ°°μ΄ || νν°Fn | MVP |
(option: T) => boolean
|null
| νν°λ§ μ΅μ μ μ¬μ©λλ κΈ°λ₯ || λ λμ΅μ Fn | MVP |
(option: T) => string
|null
| μλ μμ± ν¨λμμ μ΅μ μ λ λλ§νλ λ° μ¬μ©λλ κΈ°λ₯ || μ리 νμμ | MVP | λ¬Έμμ΄ | '' | μ΅μ μ΄ μ νλμ§ μμ κ²½μ° μ λ ₯ νλμ νμν μ리 νμμ |
| μ₯μ μΈ | MVP | λΆμΈ | κ±°μ§ | 콀보 μμκ° λΉνμ±νλμλμ§ μ¬λΆλ₯Ό νμΈνλ λΆμΈ |
| λ‘λ© | MVP | λΆμΈ | κ±°μ§ | λ‘λ© νμκΈ°λ₯Ό νμν μ§ μ¬λΆλ₯Ό κ²°μ νλ λΆμΈ |
| μ ν | MVP | μ΄λ€ | λ | μ¬μ μ ν νλͺ© |
| λ€μ€ μ ν | v2 | λΆμΈ | κ±°μ§ | λ μ΄μμ μ΅μ μ λμμ μ νν μ μλμ§ μ¬λΆλ₯Ό κ²°μ νλ λΆμΈ |
μΆλ ₯
| μ΄λ¦ | μμ | μ ν | μ€λͺ |
| ---------------- | ----------- | ---------------------------------- | -------------------------------------------------- ---- |
| λ³κ²½ | MVP | FluidComboBoxChangeEvent | κ°μ΄ λ³κ²½λ λ λ°μνλ μ΄λ²€νΈ |
| νν° κ΅ν | MVP | FluidComboBoxFilterChangeEvent | μ¬μ©μκ° νν°λ§ κ°μ μ λ ₯νλ©΄ λ°μνλ μ΄λ²€νΈ |
| μ ν λ³κ²½ | MVP | FluidComboBoxSelectionChangeEvent | μ νν μ΅μ μ΄ λ³κ²½λ λ λ°μνλ μ΄λ²€νΈ |
FluidLoadingSpinner
FluidComboBoxμ μ μ 쑰건μΌλ‘ μ¬μ¬μ© κ°λ₯ν λ‘λ© μ€νΌλ κ΅¬μ± μμλ₯Ό λ¨Όμ ꡬνν΄μΌ ν©λλ€.
ToDo
μλ‘μ΄ λ‘λ© μ€νΌλμ L&Fμ λν΄ UXμ λ¬Έμνμμμ€(λλ μ΄μ λμμΈμ μ¬μ¬μ©ν μ μλμ§ μ¬λΆ).FluidVirtualScroller
FluidComboBoxμ μ μ 쑰건μΌλ‘ κ°μ μ€ν¬λ‘€μ ꡬννλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό ꡬνν΄μΌ ν©λλ€.
λ€μμ μμ΄ν μ΄ μλ 콀보λ°μ€λ₯Ό μ¬μ©ν μ μλλ‘ νκΈ° μν¨μ λλ€.
λν보μμμ€:
https://github.com/WICG/virtual-scroller/blob/master/README.md
https://www.sitepen.com/blog/next-generation-virtual-scrolling/
https://dev.to/adamklein/build-your-own-virtual-scroll-part-i-11ib
https://blog.logrocket.com/virtual-scrolling-core-principles-and-basic-implementation-in-react/
ν루μ΄λνμ€λ²
FluidComboBoxμ μ μ 쑰건μΌλ‘ λ°°μΉν μ μλ μ¬μ¬μ© κ°λ₯ν νμ€λ² κ΅¬μ± μμλ₯Ό ꡬνν΄μΌ ν©λλ€.
콀보 μμμ μ λ ₯ μμ μλμ μλ²½νκ² μμ΅λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬λ ν΄λΉ κ΅¬μ± μμλ₯Ό ꡬννλ λ° μ¬μ©ν΄μΌ ν©λλ€.
https://popper.js.org/docs/v2/