diff --git a/packages/select/src/vaadin-select-base-mixin.js b/packages/select/src/vaadin-select-base-mixin.js index b0a78f39b27..a6dee6107be 100644 --- a/packages/select/src/vaadin-select-base-mixin.js +++ b/packages/select/src/vaadin-select-base-mixin.js @@ -304,6 +304,10 @@ export const SelectBaseMixin = (superClass) => * @private */ _onClick(event) { + if (this.disabled) { + return; + } + // Prevent parent components such as `vaadin-grid` // from handling the click event after it bubbles. event.preventDefault(); @@ -324,7 +328,7 @@ export const SelectBaseMixin = (superClass) => * @override */ _onKeyDown(e) { - if (e.target === this.focusElement && !this.readonly && !this.opened) { + if (e.target === this.focusElement && !this.readonly && !this.disabled && !this.opened) { if (/^(Enter|SpaceBar|\s|ArrowDown|Down|ArrowUp|Up)$/u.test(e.key)) { e.preventDefault(); this.opened = true; diff --git a/packages/select/test/select.common.js b/packages/select/test/select.common.js index 23a8e440c52..0aab4cffd80 100644 --- a/packages/select/test/select.common.js +++ b/packages/select/test/select.common.js @@ -499,15 +499,24 @@ describe('vaadin-select', () => { }); describe('disabled', () => { - it('should disable the button and disable opening if select is disabled', async () => { + beforeEach(async () => { select.disabled = true; await nextUpdate(select); + }); + + it('should disable the value button element when disabled', () => { expect(valueButton.disabled).to.be.true; + }); + it('should not open on value button Enter when disabled', () => { enterKeyDown(valueButton); + expect(select.opened).to.be.false; expect(select._overlayElement.opened).to.be.false; + }); + it('should not open on value button click when disabled', () => { click(valueButton); + expect(select.opened).to.be.false; expect(select._overlayElement.opened).to.be.false; }); });