Skip to content

Commit 8a4d0ea

Browse files
authored
fix: prevent opening or selecting item if modifier key is used (#10508)
1 parent abc0e87 commit 8a4d0ea

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

packages/select/src/vaadin-select-base-mixin.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ export const SelectBaseMixin = (superClass) =>
360360
_onKeyDown(e) {
361361
super._onKeyDown(e);
362362

363+
if (e.altKey || e.shiftKey || e.ctrlKey || e.metaKey) {
364+
return;
365+
}
366+
363367
if (e.target === this.focusElement && !this.readonly && !this.disabled && !this.opened) {
364368
if (/^(Enter|SpaceBar|\s|ArrowDown|Down|ArrowUp|Up)$/u.test(e.key)) {
365369
e.preventDefault();

packages/select/test/keyboard.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,16 @@ describe('keyboard', () => {
181181
expect(clone.hasAttribute(attr)).to.be.false;
182182
});
183183
});
184+
185+
['ctrl', 'meta', 'alt', 'shift'].forEach((modifierKey) => {
186+
it(`should not select item when ${modifierKey}+key is pressed`, async () => {
187+
// 79 is the key code for 'o'
188+
const event = keyboardEventFor('keydown', 79, [modifierKey], 'o');
189+
valueButton.dispatchEvent(event);
190+
await nextUpdate(select);
191+
192+
expect(select.value).to.equal('');
193+
});
194+
});
184195
});
185196
});

0 commit comments

Comments
 (0)