diff --git a/webapp/plugins/vue-directives.js b/webapp/plugins/vue-directives.js index 7f09b2fb0..43daed57e 100644 --- a/webapp/plugins/vue-directives.js +++ b/webapp/plugins/vue-directives.js @@ -7,7 +7,14 @@ export default ({ app }) => { // Focus the element Vue.nextTick(() => { if (binding.value !== false) { - el.focus() + let target = el + const isInput = target instanceof HTMLInputElement + if (!isInput) { + target = el.querySelector('input') + } + if (target && typeof target.focus === 'function') { + target.focus() + } } }) }, diff --git a/webapp/storybook/helpers.js b/webapp/storybook/helpers.js index 677a2bf94..b6abf4c99 100644 --- a/webapp/storybook/helpers.js +++ b/webapp/storybook/helpers.js @@ -3,6 +3,7 @@ import Vuex from 'vuex' import vuexI18n from 'vuex-i18n/dist/vuex-i18n.umd.js' import Styleguide from '@human-connection/styleguide' import Filters from '~/plugins/vue-filters' +import Directives from '~/plugins/vue-directives' import IziToast from '~/plugins/izi-toast' import layout from './layout.vue' import locales from '~/locales/index.js' @@ -15,6 +16,7 @@ const helpers = { Vue.use(Styleguide) Vue.use(Filters) Vue.use(IziToast) + Vue.use(Directives) Vue.use(vuexI18n.plugin, helpers.store) locales.forEach(({ code }) => { @@ -38,7 +40,7 @@ const helpers = { isAdmin() { return true }, - user(state) { + user() { return { id: '1', name: 'admin', slug: 'admin' } }, }, diff --git a/webapp/test/testSetup.js b/webapp/test/testSetup.js index 3e0a04645..1c93d14b5 100644 --- a/webapp/test/testSetup.js +++ b/webapp/test/testSetup.js @@ -5,6 +5,7 @@ import Styleguide from '@human-connection/styleguide' import BaseComponents from '~/plugins/base-components' import Filters from '~/plugins/vue-filters' import InfiniteLoading from '~/plugins/vue-infinite-loading' +import Directives from '~/plugins/vue-directives' global.localVue = createLocalVue() @@ -13,4 +14,5 @@ global.localVue.use(VTooltip) global.localVue.use(Styleguide) global.localVue.use(BaseComponents) global.localVue.use(Filters) +global.localVue.use(Directives) global.localVue.use(InfiniteLoading)