vaadin-combo-box
μμκ° paper-dialog λ΄λΆμ μμ λ μ¬μ©μκ° μ ν μμλ₯Ό μ΄λ©΄(μ ννμ§ μκ³ κ·Έλ₯ μ΄λ¦° μνλ‘ λ‘λλ€) λν μμμ μ무 κ³³μ΄λ ν΄λ¦νλ©΄ λν μμκ° λ«νλλ€.
λν μμμ μ무 κ³³μ΄λ ν΄λ¦νλ©΄(μΌμͺ½ μλ¨ λͺ¨μ리μ μμ) μμλ λ«νμ§λ§ λν μμλ μ΄μ΄ λ‘λλ€.
λν μμμ μ무 κ³³μ΄λ ν΄λ¦νλ©΄ μ 체 λν μμκ° λ«νλλ€.
https://jsfiddle.net/ribe/02tntfn3/2/
μ΄λ²€νΈ μ νμ μΌμ’
μ λ²κ·Έκ° μμ΅λλ€. μλ₯Ό λ€μ΄ Escλ₯Ό λλ¬ vaadin-combo-box
λ₯Ό λ«μΌλ©΄ λν μμλ λ«νλλ€. μ΄λ¬ν κ²½μ° μΌλ°μ μΌλ‘ on-keydown="_stopPropagation"
μ κ°μ κ²μ μ¬μ©νκ³ λ€μκ³Ό κ°μ μ²λ¦¬κΈ°λ₯Ό μΆκ°ν©λλ€.
_stopPropafation: function (e) {
e.stopPropagation()
}
IronA11yKeysBehavior μμ μ 곡νλ stopKeyboardEventPropagation
μμ±λ μμ§λ§ ν΄λΉ λμμ vaadin-combo-box
μ μν΄ κ΅¬νλμ§ μκ³ ν΄λΉ μμ±μ΄ μΌλΆ λ€λ₯Έ μμμ λν΄ μλνμ§ μλ κ² κ°μ΅λλ€. μ΄λ²€νΈλ₯Ό λ무 λ¦κ² μ²λ¦¬νλ κ² κ°μ΅λλ€.
μ£Όμ΄μ§ Fiddleμμ stopPropagation
λ₯Ό νΈμΆνλ μ΄λ²€νΈλ₯Ό λ°°μΉν μμΉλ₯Ό μ°Ύμ μ μμ΅λλ€. μ΄λ€ μμ΄λμ΄λΌλ?
μλ νμΈμ!
μ¬κΈ°μ λ¬Έμ λ <vaadin-combo-box>
<paper-dialog>
<body>
μλμ λ°°μΉλμ΄ μ½€λ³΄ μμμ μ€λ²λ μ΄μ λν λͺ¨λ ν΄λ¦μ "μΈλΆ ν΄λ¦"μΌλ‘ κ°μ£Όνλ€λ κ²μ
λλ€. ", κΈ°λ³Έμ μΌλ‘ λν μμλ₯Ό λ«μ΅λλ€.
ν΄κ²° λ°©λ²μΌλ‘ 콀보 μμκ° μ΄λ € μμ λ μΈλΆ ν΄λ¦μ λΉνμ±νν μ μμ΅λλ€.
...
<vaadin-combo-box id="third" label="Focus Third" tabindex="3" on-focus="_focusInput" items="[[items]]" on-blur="_onBlur" on-opened-changed="_onComboBoxOpened">
</vaadin-combo-box>
<script>
...
_onComboBoxOpened: function(e) {
if (e.detail.value) {
this.$.add_row_details_dialog.noCancelOnOutsideClick = true;
} else {
this.async(function() {
this.$.add_row_details_dialog.noCancelOnOutsideClick = false;
}, 10);
}
}
...
</script>
@Saulis , λΆννλ λΉμ μ μ κ·Ό λ°©μμ μ μκ² ν¨κ³Όκ° μμμ΅λλ€. κ·Έλ¬λ μ’ μ΄ λν μμμμ noCancelOnOutsideClick μμ±μ trueλ‘ μ€μ νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€(μ΄ κ²½μ° λν μμ μΈλΆλ₯Ό ν΄λ¦ν λ λν μμλ₯Ό λ«μ νμκ° μμμ΅λλ€).
μ°Έκ³ λ‘, μ΄κ²μ λ§μ°μ€λ₯Ό μ¬μ©νμ¬ μ½€λ³΄ μμμμ νλͺ©μ μ ννλ κ²½μ°μλ λ°μν©λλ€...
paper-dialog μμμ 'no-cancel-on-outside-click'μ μ μ©ν©λλ€. μ΄λ κ² νλ©΄ vaadin-combo-boxμμ λ§μ°μ€ ν΄λ¦μ΄λ ν€λ³΄λλ‘ μμλ₯Ό μ νν λ λν μμκ° λ«νμ§ μμ΅λλ€.
<paper-dialog no-cancel-on-outside-click>
<vaadin-combo-box class="elements-box" items="[[arrayOfValues]]"></vaadin-combo-box>
</paper-dialog>
@kito99 / @artem-vladimirovμ no-cancel-on-outside-clickμ μ¬μ©ν ν΄κ²° λ°©λ²μ μ¬μ©μκ° μΈλΆ ν΄λ¦μΌλ‘ λν μμλ₯Ό λ«μ μ μκΈ°λ₯Ό μνκΈ° λλ¬Έμ μΌλ°μ μΌλ‘ λλ μ μκ² μ ν©νμ§ μμ΅λλ€. (κ·Έλ¬λ κ·Έκ²μ΄ μꡬ μ¬νμ΄ μλ κ²½μ° μλνλμ§ νμΈν μ μμ΅λλ€).
λ λ€λ₯Έ (μ μ¬ν) ν΄κ²° λ°©λ²μ iron-overlay-canceled
μ΄λ²€νΈλ₯Ό μμ ν λ€μ event.stopPropagation()
λ° event.preventDefault()
λ₯Ό νΈμΆνλ κ²μ΄μ§λ§ λ€λ₯Έ ν΄κ²° λ°©λ²κ³Ό λμΌν λ¬Έμ κ° μμ΅λλ€. λν μμλ₯Ό λ«μ μ μμ΅λλ€. λ°°κ²½ ν΄λ¦μ.
λλ λ μ΄λ²€νΈλ₯Ό μλ‘ κ΅¬λ³νλ €κ³ μλνμ§λ§ μ§κΈκΉμ§λ μ΄μ΄ μμ΅λλ€.
νλͺ©μ μ ννλ κ²λ§μΌλ‘λ λν μμκ° λ«νκ³ μ’ μ΄ λν μμλ₯Ό ν΄λ¦νμ¬ μ νμ μ·¨μνλ κ²λ λ§μ°¬κ°μ§λΌλ @kito99 μ κ΄μ°°μ νμΈν μ μμ΅λλ€.
νΈμ§νλ€:
λλ λ€μκ³Ό κ°μ ν΄κ²° λ°©λ²μ μκ°ν΄ λμ΅λλ€.
listeners: {
"iron-overlay-canceled": "onCanceled",
},
onCanceled(event) {
const paperDialogHoverElement = document.querySelector("paper-dialog:hover");
const vaadinHoverElement = document.querySelector("vaadin-combo-box-overlay:hover");
if (paperDialogHoverElement || vaadinHoverElement) {
event.stopPropagation();
event.preventDefault();
}
}
μ¦, 컀μκ° μ’ μ΄ λν μμ λλ μ€λ²λ μ΄ μμμ μλ κ²½μ°μλ§ μ΄λ²€νΈκ° μ·¨μλ©λλ€. μ΄ ν΄κ²° λ°©λ²μ μ¬μ©νλ©΄ λλ‘λ€μ΄ κ°μ μ ννκ³ μΈλΆ ν΄λ¦μΌλ‘ λν μμλ₯Ό λ«κ³ μ΄μ€μΌμ΄ν λ²νΌμΌλ‘ λν μμλ₯Ό λ«μ μλ μμ΅λλ€. Chrome λ° Firefoxμμ ν μ€νΈλμμ΅λλ€.
μ λ²μ μ κΈ°λ€λ¦¬λ κ² μΈμ μ¬κΈ°μ ν μΌμ΄ μμ΅λκΉ? 곡μ vaadin ν΄κ²° λ°©λ²?
μ μ΄ λ¬Έμ λ₯Ό μ€λ«λμ μμ ν λμ³€λμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. μ΄κ²μ μ λ§ κ·Όλ³Έμ μΈ μ¬μ©μ± λ¬Έμ μ΄λ©° 빨리 μμ λμ΄μΌ ν©λλ€. @Saulis λλ κ°λ° νμ λ€λ₯Έ λκ΅°κ°κ° μ΄λ² μ£Όλ λ€μ μ£Όμ μ΄ν΄λ³΄λλ‘ μκ°μ μ€ μ μλμ§ μμλ³΄κ² μ΅λλ€.
μλ
νμΈμ μ¬λ¬λΆ, iron-overlay-cancel
λΈλμΉλ₯Ό μ¬μ©ν΄λ³΄μμμ€ (λΆννλ νμ¬ λ§μ€ν° μμ ꡬμΆλμμΌλ―λ‘ νμ΄λΈλ¦¬λ μΈ κ²½μ° μ’
μμ± μΆ©λμ΄μμ μ μμ΅λλ€. depsλ₯Ό 2.0-preview
λ‘ ν΄κ²°νκ³ Polymerλ₯Ό μ΄λ μͺ½μ΄λ μνλ€)
λν 1.x
λΆκΈ°( iron-overlay-cancel-v1
) μλ¨μμ λ³κ²½ μ¬νμ μ ννμ§λ§ νμ¬ Polymer 2 λ°μ°μ΄ μ€μ μ μλ§μΌλ‘ λ§λ€κ³ μΆμ§ μκΈ° λλ¬Έμ μ€μ€λ‘ μλνλμ§ νμΈν μ μμ΅λλ€. -)
μ
λ°μ΄νΈ: μ΄ μμ μ¬νμ iron-overlay-behavior
v1.10.3
μ΄μμμλ§ μλν©λλ€.
@GoceRibeski @web-padawan @kito99 @artem-vladimirov @panuhorsmalahti @timoteoponce λꡬλ μ§ μμ μ μλν κΈ°νκ° μμ΅λκΉ? κ°μ¬ ν΄μ!
@Saulis μκΈ°μμΌ μ£Όμ
μ κ°μ¬ν©λλ€. λ°©κΈ iron-overlay-cancel-v1
λΆκΈ°λ₯Ό μ‘κ³ κ²½κ³ λ₯Ό λ΄
λλ€.
[vaadin-combo-box::_createEventHandler]: listener method `_onBlur` not defined
λ°λΌμ paper-dialog
λ° λ΄λΆ vaadin-combo-box
λ₯Ό λͺ¨λ μ° ν λ κ°μ§λ₯Ό μλνμ΅λλ€.
μ§κΈ μ‘°μ¬ν μκ°μ΄ λ§μ§ μμ§λ§, μ²μ·¨μκ° λλ½λ κ²μ΄ μμΈμΌ μ μμ΅λλ€.
@web-padawan κ°μ¬ν©λλ€! λλ½λ _onBlur
μ λν΄ κ±±μ ν νμκ° μμ΅λλ€. 리μ€λλ μλμ μΌλ‘ μ κ±°λμμ§λ§ μ€μλ‘ λ¦¬μ€λ λ°μΈλ©μ μ μ리μ λμμ΅λλ€. κ·νκ° λ³΄κ³ ν λ¬Έμ λ₯Ό λ€μ ν
μ€νΈν΄μΌ ν©λλ€. v1 λΆκΈ°λ₯Ό μ§μ ν
μ€νΈνμ§ μμμ΅λλ€.
@web-padawan iron-overlay-cancel
μμ Polymer 2.x λ° iron-overlay-cancel-v1
Polymer 1.9.1
iron-overlay-behavior
μμ μμ μ¬νμ΄ μλνλμ§ νμΈν μ μμ΅λλ€. v1.10.3
μ΄μ μ€μΉ( 2.0.0
μ€ν μ€)
@Saulis κ·Έκ²μ λλ₯Ό μν΄ μλνμ§ μμ΅λλ€. μ¬μ€ 2.0a4μλ μλ μ΄μν λ²κ·Έλ μμ΅λλ€. λ΄ ν νλ¦Ώμ λͺ¨λ ν μ€νΈκ° μ¬λΌμ§λλ€.
iron-overlay-behavior#2.0.0
λ‘ ν΄λ¦¬λ¨Έ 2λ₯Ό μ€ν μ€μ
λλ€.
λ€μμ 2.0.0-alpha4
μ
λλ€. http://www.giphy.com/gifs/3ohzdQKeVtoswDSpfW
λ€μμ iron-overlay-cancel
μ§μ μ
λλ€. http://www.giphy.com/gifs/3o7btZ3T0yMwKkG6fm
@arkihillel master
μμ iron-overlay-cancel
λ₯Ό λ€μ κΈ°λ°μΌλ‘ νμ΅λλ€. λ€μ μλν μ μμ΅λκΉ? κ·Έλ¦¬κ³ λͺ¨λ bower depλ₯Ό λ€μ μ€μΉν΄μΌ ν©λλ€.
μ μκ² ν¨κ³Όκ° μλ κ² κ°μ΅λλ€.
μ¬μ©: vaadin-combo-box#iron-overlay-cancel, polymer#2.0.1, iron-overlay-behavior#2.0.0
Btw, ν° λ¬Έμ λ μλμ§λ§ _removeOutsideTabListener
, μ¦ Tab λ Tap μΌλ‘ μ€νλ₯Ό λμ μ μμ΅λλ€ ;)
@Saulis λ μ§κΈ μλν©λλ€!
μμ ν΄μ μ£μ‘ν©λλ€, μ΄μν λ²κ·Έλ₯Ό λ°κ²¬ν μ€ μμλλ° μ μ€μμμ΅λλ€.
μ΄λ―Έ μμ μ μΈ μ루μ
μ΄ μμ΅λκΉ?
λ§μ°μ€λ₯Ό μ¬μ©νμ¬ νλͺ©μ μ ννλ©΄ μ΄λ²€νΈ(selectedItemChange)κ° λ λ² νΈλ¦¬κ±°λ©λλ€. 첫 λ²μ§Έ νλͺ©μ μλ‘ μ νν νλͺ©μ΄κ³ λ λ²μ§Έ νλͺ©μ μ΄μ νλͺ©μ
λλ€(μ ν μ¬ν λ³κ²½ λΆκ°).
κ°μ¬ ν΄μ.
κ°μ₯ μ μ©ν λκΈ
μ°Έκ³ λ‘, μ΄κ²μ λ§μ°μ€λ₯Ό μ¬μ©νμ¬ μ½€λ³΄ μμμμ νλͺ©μ μ ννλ κ²½μ°μλ λ°μν©λλ€...