diff --git a/packages/vuetify/src/components/VList/VListItem.ts b/packages/vuetify/src/components/VList/VListItem.ts index e6d02c6d93a..b5a386b1733 100644 --- a/packages/vuetify/src/components/VList/VListItem.ts +++ b/packages/vuetify/src/components/VList/VListItem.ts @@ -168,10 +168,12 @@ export default baseMixins.extend().extend({ data[this.to ? 'nativeOn' : 'on'] = { ...data[this.to ? 'nativeOn' : 'on'], keydown: (e: KeyboardEvent) => { - /* istanbul ignore else */ - if (e.keyCode === keyCodes.enter) this.click(e) + if (!this.disabled) { + /* istanbul ignore else */ + if (e.keyCode === keyCodes.enter) this.click(e) - this.$emit('keydown', e) + this.$emit('keydown', e) + } }, } diff --git a/packages/vuetify/src/components/VList/__tests__/VListItem.spec.ts b/packages/vuetify/src/components/VList/__tests__/VListItem.spec.ts index 140c7dbd521..86b6a42e189 100644 --- a/packages/vuetify/src/components/VList/__tests__/VListItem.spec.ts +++ b/packages/vuetify/src/components/VList/__tests__/VListItem.spec.ts @@ -234,4 +234,16 @@ describe('VListItem.ts', () => { wrapper2.vm.toggle() expect(wrapper2.vm.isActive).toBeTruthy() }) + + it('should not react to keydown.enter when disabled', () => { + const click = jest.fn() + const wrapper = mountFunction({ + methods: { click }, + propsData: { disabled: true }, + }) + + wrapper.trigger('keydown.enter') + + expect(click).not.toHaveBeenCalled() + }) })