Vaadin-combo-box: 잘λͺ»λœ μƒνƒœμ—μ„œ 멈좀

에 λ§Œλ“  2019λ…„ 07μ›” 22일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: vaadin/vaadin-combo-box

μ„€λͺ…


vaadin-combo-box κ°€ ν•„μš”ν•˜κ³  vaadin-combo-box κ°€ μ„ νƒλ˜μ—ˆμ§€λ§Œ 아무 것도 μ„ νƒλ˜μ§€ μ•Šμ€ 경우 vaadin-combo-box 선택을 μ·¨μ†Œν•  λ•Œ λ‚΄λΆ€ vaadin-text-field λŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κ·Έ 사이에 ν•„μˆ˜ 속성이 제거되면 λ‚΄λΆ€ vaadin-text-field λŠ” μ—¬μ „νžˆ μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœμž…λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” κ²°κ³Ό


vaadin-combo-box μ—μ„œ 속성(λ˜λŠ” μ΅œμ†Œν•œ ν•„μˆ˜ 속성)을 λ³€κ²½ν•˜λ©΄ κΈ°λ³Έ vaadin-text-field 의 μœ νš¨μ„± μž¬ν™•μΈμ΄ νŠΈλ¦¬κ±°λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ‹€μ œ κ²°κ³Ό


vaadin-text-field 이(κ°€) 잘λͺ»λœ μƒνƒœμ— μžˆμŠ΅λ‹ˆλ‹€. 이 잘λͺ»λœ μƒνƒœλ‘œ 인해 양식을 μ œμΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€.

라이브 데λͺ¨


https://ring-umbra.glitch.me

μž¬ν˜„ 단계

  1. 데λͺ¨ μ—΄κΈ°
  2. vaadin-combo-box ν•©λ‹ˆλ‹€. μ˜΅μ…˜μ΄ ν‘œμ‹œλ˜μ§€λ§Œ ν•­λͺ©μ„ μ„ νƒν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€(곡백의 아무 κ³³μ΄λ‚˜ 클릭).
  3. ν•„λ“œλ₯Ό ν•„μˆ˜ ν•­λͺ©μœΌλ‘œ λ§Œλ“€λ €λ©΄ ν™•μΈλž€μ„ μ„ νƒν•©λ‹ˆλ‹€.
  4. 2단계λ₯Ό λ°˜λ³΅ν•˜λ©΄ vaadin-combo-box κ°€ λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œμ‹œλ˜κ³  잘λͺ»λœ μƒνƒœκ°€ λ©λ‹ˆλ‹€.
  5. ν™•μΈλž€μ˜ 선택을 μ·¨μ†Œν•˜λ©΄ ν•„λ“œκ°€ 더 이상 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  6. 2단계λ₯Ό λ°˜λ³΅ν•˜λ©΄ vaadin-combo-box κ°€ 잘λͺ»λœ μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€.
  7. vaadin-combo-box μ—μ„œ ν•­λͺ© 선택
  8. vaadin-combo-box λ₯Ό λΉ„μš°λ €λ©΄ μ§€μš°κΈ° λ²„νŠΌμ„ μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. vaadin-combo-box λŠ” 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ§€λ§Œ μ—¬μ „νžˆ μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœμž…λ‹ˆλ‹€.

vaadin-combo-box 의 잘λͺ»λœ 속성을 변경해도 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 값이 λ‚΄λΆ€ vaadin-text-field λ°˜μ˜λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

영ν–₯을 λ°›λŠ” λΈŒλΌμš°μ €

  • [x] 크둬
  • [x] νŒŒμ΄μ–΄ν­μŠ€
  • [ ] μ‚¬νŒŒλ¦¬
  • [x] κ°€μž₯자리
  • [x] IE 11
  • [ ] iOS μ‚¬νŒŒλ¦¬
  • [ ] μ•ˆλ“œλ‘œμ΄λ“œ 크둬

_λ‹€λ₯Έ λΈŒλΌμš°μ €μ—λ„ 같은 λ¬Έμ œκ°€ μžˆλŠ” 것 같은데 ν…ŒμŠ€νŠΈλ₯Ό λͺ»ν–ˆμŠ΅λ‹ˆλ‹€_

λͺ¨λ“  6 λŒ“κΈ€

이것은 λŒ€μ‹  vaadin-text-field 의 버그인 것 κ°™μŠ΅λ‹ˆλ‹€. vaadin-combo-box λŠ” required 및 invalid 속성을 λ‚΄λΆ€ vaadin-text-field 와 λ™κΈ°ν™”ν•©λ‹ˆλ‹€.

required μƒνƒœλ₯Ό λ™μ μœΌλ‘œ λ³€κ²½ν•˜λŠ” 것(λ˜λŠ” λ‹€λ₯Έ μœ νš¨μ„± 검사 μ œμ•½ 쑰건)은 ꡬ성 μš”μ†Œλ₯Ό κ°œλ°œν•  λ•Œ κ³ λ €λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μœ νš¨μ„± κ²€μ‚¬λŠ” required , pattern , maxlength 및 minlength ν•©λ‹ˆλ‹€. 이듀 쀑 ν•˜λ‚˜λΌλ„ μ„€μ •λ˜λ©΄ κΈ°λ³Έ <input> 의 checkValidity() λ°˜ν™˜ 값을 기반으둜 invalid λΆ€μšΈμ„ μ„€μ •ν•©λ‹ˆλ‹€. κ·Έ 쀑 아무 것도 μ„€μ •λ˜μ§€ μ•Šμ€ κ²½μš°μ—λ„ μžμ‹ μ˜ 논리에 따라 invalid λ₯Ό true λ˜λŠ” false μˆ˜λ™μœΌλ‘œ μ„€μ •ν•  수 있으며 vaadin-text-field λŠ” 잘λͺ»λœ μƒνƒœλ₯Ό κ·ΈλŒ€λ‘œ μœ μ§€ν•©λ‹ˆλ‹€. μ„€μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” 검증 μ œμ•½ 쑰건 쀑 ν•˜λ‚˜λ§Œ μ„€μ •λ˜μ–΄ 있고(예: required ) ν•„λ“œκ°€ κ²€μ¦λ˜μ–΄ μœ νš¨ν•˜μ§€ μ•Šκ²Œ 된 λ‹€μŒ μ œμ•½ 쑰건을 μ œκ±°ν•˜λ©΄ checkValidity() μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 더 이상 κΈ°λ³Έ μž…λ ₯에 invalid μƒνƒœλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€(μˆ˜λ™μœΌλ‘œ μΆ”κ°€ν•œ κ²ƒμ²˜λŸΌ). 기본적으둜 ν…μŠ€νŠΈ ν•„λ“œλŠ” ν™œμ„± μœ νš¨μ„± 검사 μ œμ•½ 쑰건이 없을 λ•Œ invalid μƒνƒœλ₯Ό μžλ™μœΌλ‘œ μ œκ±°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μ μ ˆν•œ λ…Όλ¦¬λŠ” required , pattern , maxlength λ˜λŠ” minlength μ œμ•½ 쑰건이 제거될 λ•Œ κ΄€μ°°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ _and_ invalid == true 이미 μ„€μ •ν•œ λ‹€μŒ this.invalid = this.inputElement.checkValidity();

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ vaadin-text-field 둜 μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

<vaadin-text-field required="{{tfRequired}}"></vaadin-text-field><br>
<label>Required <input type="checkbox" checked="{{tfRequired::change}}"></label>
  1. ν™•μΈλž€ 켜기(ν…μŠ€νŠΈ ν•„λ“œκ°€ ν•„μš”ν•¨)
  2. ν…μŠ€νŠΈ ν•„λ“œμ— μ΄ˆμ μ„ λ§žμΆ”κ³  μ΄ˆμ μ„ ν•΄μ œν•©λ‹ˆλ‹€(아직 λΉ„μ–΄ 있기 λ•Œλ¬Έμ— μœ νš¨ν•˜μ§€ μ•Šκ²Œ λ§Œλ“­λ‹ˆλ‹€)
  3. ν™•μΈλž€ 끄기(ν…μŠ€νŠΈ ν•„λ“œκ°€ ν•„μš”ν•˜μ§€ μ•ŠμŒ)
  4. ν…μŠ€νŠΈ ν•„λ“œμ— 무언가λ₯Ό μ“°κ³  μ΄ˆμ μ„ ν•΄μ œν•˜λ©΄ ν…μŠ€νŠΈ ν•„λ“œκ°€ μ—¬μ „νžˆ μœ νš¨ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€.

https://github.com/vaadin/vaadin-text-field/issues/400μ—μ„œ 이에 λŒ€ν•œ 문제λ₯Ό μ—΄μ—ˆμ§€λ§Œ λ‹€λ₯Έ μ‚¬λžŒμ΄ 콀보 μƒμž 문제λ₯Ό μ•Œμ•„μ°¨λ¦΄ 경우 더 λ‚˜μ€ κ°€μ‹œμ„±μ„ μœ„ν•΄ 이 콀보 μƒμž 문제λ₯Ό 여기에 남겨 λ‘κ² μŠ΅λ‹ˆλ‹€. μœ„μ˜ ν…μŠ€νŠΈ ν•„λ“œ λ¬Έμ œκ°€ μˆ˜μ •λœ ν›„ λ‹«ν˜€μ•Ό ν•©λ‹ˆλ‹€.

이 μˆ˜μ • 사항은 vaadin-text-field v2.3.9 및 v2.4.10 μ—μ„œ λ¦΄λ¦¬μŠ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€ .

이제 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. @Haprogλ‹˜, μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€! πŸ˜„

γ…‹ afaik vaadin-text-field v2.3.9 및 v2.4.10에 λŒ€ν•œ WebJarκ°€ μ†μƒλ˜μ—ˆμœΌλ―€λ‘œ Java(ν˜Έν™˜ λͺ¨λ“œμ˜ Vaadin 10–13 λ˜λŠ” Vaadin 14)μ—μ„œ 이λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우 μ•½κ°„ κΈ°λ‹€λ €μ•Ό ν•©λ‹ˆλ‹€. WebJarκ°€ μž‘λ™ν•˜λŠ” v2.3.10 및 v2.4.11을 곧 μΆœμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰