From 28a64c4d0e3b01ba0a6b7d79f285561e084f12f8 Mon Sep 17 00:00:00 2001 From: Kael Date: Mon, 27 Dec 2021 20:09:43 +1100 Subject: [PATCH] fix(VTooltip): allow disabling openOnClick/openOnFocus fixes #14444 --- .../vuetify/src/components/VMenu/VMenu.ts | 4 ---- .../src/components/VTooltip/VTooltip.ts | 21 ++++++++++++------- .../vuetify/src/mixins/activatable/index.ts | 6 +++++- packages/vuetify/src/mixins/menuable/index.ts | 1 - 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/vuetify/src/components/VMenu/VMenu.ts b/packages/vuetify/src/components/VMenu/VMenu.ts index e92183591d8..dbbba8bf059 100644 --- a/packages/vuetify/src/components/VMenu/VMenu.ts +++ b/packages/vuetify/src/components/VMenu/VMenu.ts @@ -75,10 +75,6 @@ export default baseMixins.extend({ }, offsetX: Boolean, offsetY: Boolean, - openOnClick: { - type: Boolean, - default: true, - }, openOnHover: Boolean, origin: { type: String, diff --git a/packages/vuetify/src/components/VTooltip/VTooltip.ts b/packages/vuetify/src/components/VTooltip/VTooltip.ts index f0a4f675f4a..bf558776d90 100644 --- a/packages/vuetify/src/components/VTooltip/VTooltip.ts +++ b/packages/vuetify/src/components/VTooltip/VTooltip.ts @@ -34,6 +34,10 @@ export default mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).ext type: Boolean, default: true, }, + openOnFocus: { + type: Boolean, + default: true, + }, tag: { type: String, default: 'span', @@ -157,14 +161,17 @@ export default mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).ext genActivatorListeners () { const listeners = Activatable.options.methods.genActivatorListeners.call(this) - listeners.focus = (e: Event) => { - this.getActivator(e) - this.runDelay('open') - } - listeners.blur = (e: Event) => { - this.getActivator(e) - this.runDelay('close') + if (this.openOnFocus) { + listeners.focus = (e: Event) => { + this.getActivator(e) + this.runDelay('open') + } + listeners.blur = (e: Event) => { + this.getActivator(e) + this.runDelay('close') + } } + listeners.keydown = (e: KeyboardEvent) => { if (e.keyCode === keyCodes.esc) { this.getActivator(e) diff --git a/packages/vuetify/src/mixins/activatable/index.ts b/packages/vuetify/src/mixins/activatable/index.ts index 5c0c8590da6..27cd906704c 100644 --- a/packages/vuetify/src/mixins/activatable/index.ts +++ b/packages/vuetify/src/mixins/activatable/index.ts @@ -30,6 +30,10 @@ export default baseMixins.extend({ }, disabled: Boolean, internalActivator: Boolean, + openOnClick: { + type: Boolean, + default: true, + }, openOnHover: Boolean, openOnFocus: Boolean, }, @@ -108,7 +112,7 @@ export default baseMixins.extend({ this.getActivator(e) this.runDelay('close') } - } else { + } else if (this.openOnClick) { listeners.click = (e: MouseEvent) => { const activator = this.getActivator(e) if (activator) activator.focus() diff --git a/packages/vuetify/src/mixins/menuable/index.ts b/packages/vuetify/src/mixins/menuable/index.ts index fe7c308bc1d..aae9c1a3b61 100644 --- a/packages/vuetify/src/mixins/menuable/index.ts +++ b/packages/vuetify/src/mixins/menuable/index.ts @@ -78,7 +78,6 @@ export default baseMixins.extend().extend({ default: 0, }, offsetOverflow: Boolean, - openOnClick: Boolean, positionX: { type: Number, default: null,