From 256fa93db584a0c9cfc1137596b65aedf89999a0 Mon Sep 17 00:00:00 2001 From: Pavel Lentyaev <54902577+lentyaevpk@users.noreply.github.com> Date: Tue, 7 Dec 2021 20:20:52 +0300 Subject: [PATCH] fix(VStepperStep): editable step tab navigation (#14036) fixes #14022 * fix(VStepperStep): editable step tab navigation * fix(VStepperStep): added keyCodes helper --- .../src/components/VStepper/VStepperStep.ts | 16 +++++++++++-- .../__snapshots__/VStepperStep.spec.ts.snap | 24 ++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/packages/vuetify/src/components/VStepper/VStepperStep.ts b/packages/vuetify/src/components/VStepper/VStepperStep.ts index 2c30ae0f64c..d8b0c85e6cc 100644 --- a/packages/vuetify/src/components/VStepper/VStepperStep.ts +++ b/packages/vuetify/src/components/VStepper/VStepperStep.ts @@ -10,6 +10,7 @@ import ripple from '../../directives/ripple' // Utilities import mixins from '../../util/mixins' +import { keyCodes } from '../../util/helpers' // Types import { VNode } from 'vue' @@ -90,7 +91,7 @@ export default baseMixins.extend().extend({ }, methods: { - click (e: MouseEvent) { + click (e: MouseEvent | KeyboardEvent) { e.stopPropagation() this.$emit('click', e) @@ -131,6 +132,11 @@ export default baseMixins.extend().extend({ return children }, + keyboardClick (e: KeyboardEvent) { + if (e.keyCode === keyCodes.space) { + this.click(e) + } + }, toggle (step: number | string) { this.isActive = step.toString() === this.step.toString() this.isInactive = Number(step) < Number(this.step) @@ -139,13 +145,19 @@ export default baseMixins.extend().extend({ render (h): VNode { return h('div', { + attrs: { + tabindex: this.editable ? 0 : -1, + }, staticClass: 'v-stepper__step', class: this.classes, directives: [{ name: 'ripple', value: this.editable, }], - on: { click: this.click }, + on: { + click: this.click, + keydown: this.keyboardClick, + }, }, [ this.genStep(), this.genLabel(), diff --git a/packages/vuetify/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap b/packages/vuetify/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap index 5a899dd7a1a..d9a7e63f6c8 100644 --- a/packages/vuetify/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap +++ b/packages/vuetify/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap @@ -1,7 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`VStepperStep.ts should accept a custom color 1`] = ` -
+