From e4deaf41a1ae0b3a9d096183d87679224c377dd3 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 9 Nov 2023 12:40:06 +0100 Subject: [PATCH 1/2] Update outside click --- .../packs/vue/assign_items_to_task_modal.js | 4 +- .../packs/vue/directives/outside_click.js | 34 --------------- .../packs/vue/navigation/breadcrumbs.js | 3 +- .../packs/vue/navigation/navigator.js | 4 +- .../packs/vue/navigation/top_menu.js | 2 - app/javascript/packs/vue/protocol.js | 2 - app/javascript/packs/vue/repository_filter.js | 4 +- .../packs/vue/repository_print_modal.js | 3 +- app/javascript/packs/vue/repository_search.js | 6 +-- app/javascript/packs/vue/results.js | 2 - app/javascript/vue/navigation/navigator.vue | 2 +- .../vue/repository_search/container.vue | 11 +++-- app/javascript/vue/shared/menu_dropdown.vue | 6 ++- app/javascript/vue/shared/select.vue | 6 +-- package.json | 2 + yarn.lock | 41 +++++++++++++++++++ 16 files changed, 66 insertions(+), 66 deletions(-) delete mode 100644 app/javascript/packs/vue/directives/outside_click.js diff --git a/app/javascript/packs/vue/assign_items_to_task_modal.js b/app/javascript/packs/vue/assign_items_to_task_modal.js index 4669f571c..51b424b82 100644 --- a/app/javascript/packs/vue/assign_items_to_task_modal.js +++ b/app/javascript/packs/vue/assign_items_to_task_modal.js @@ -34,10 +34,8 @@ function initAssignItemsToTaskModalComponent() { app.component('AssignItemsToTaskModalContainer', AssignItemsToTaskModalContainer); app.use(PerfectScrollbar); app.config.globalProperties.i18n = window.I18n; - app.mount('.assign-items-to-task-modal-container'); + window.AssignItemsToTaskModalComponentContainer = app.mount('.assign-items-to-task-modal-container'); handleTurbolinks(app); - - window.AssignItemsToTaskModalComponentContainer = app; } } diff --git a/app/javascript/packs/vue/directives/outside_click.js b/app/javascript/packs/vue/directives/outside_click.js deleted file mode 100644 index 6265c4adc..000000000 --- a/app/javascript/packs/vue/directives/outside_click.js +++ /dev/null @@ -1,34 +0,0 @@ -// Use this to register outside-click directive on a Vue component -// eslint-disable-next-line max-len -// eg v-click-outside="{handler: 'handlerToTrigger', exclude: [refs to ignore on click (eg 'searchInput', 'searchInputBtn')]}" -// eslint-enable-next-line max-len - -export default { - bind(el, binding, vnode) { - el._vueClickOutside_ = (e) => { - let clickedOnExcludedEl = false; - const { exclude } = binding.value; - exclude.forEach(refName => { - if (!clickedOnExcludedEl) { - const excludedEl = vnode.context.$refs[refName]; - if (!excludedEl) return; - - clickedOnExcludedEl = (excludedEl._isVue ? excludedEl.$el : excludedEl).contains(e.target); - } - }); - - if (!el.contains(e.target) && !clickedOnExcludedEl) { - const { handler } = binding.value; - vnode.context[handler](); - } - }; - - document.addEventListener('click', el._vueClickOutside_); - document.addEventListener('touchstart', el._vueClickOutside_); - }, - unbind(el) { - document.removeEventListener('click', el._vueClickOutside_); - document.removeEventListener('touchstart', el._vueClickOutside_); - el._vueClickOutside_ = null; - } -}; diff --git a/app/javascript/packs/vue/navigation/breadcrumbs.js b/app/javascript/packs/vue/navigation/breadcrumbs.js index dc79e25b1..74262b554 100644 --- a/app/javascript/packs/vue/navigation/breadcrumbs.js +++ b/app/javascript/packs/vue/navigation/breadcrumbs.js @@ -10,6 +10,5 @@ const app = createApp({}); app.component('Breadcrumbs', Breadcrumbs); app.use(PerfectScrollbar); app.config.globalProperties.i18n = window.I18n; -app.mount('#breadcrumbs'); +window.breadcrumbsComponent = app.mount('#breadcrumbs'); handleTurbolinks(app); -window.breadcrumbsComponent = app; diff --git a/app/javascript/packs/vue/navigation/navigator.js b/app/javascript/packs/vue/navigation/navigator.js index 3e87f5aa7..3b3c7afad 100644 --- a/app/javascript/packs/vue/navigation/navigator.js +++ b/app/javascript/packs/vue/navigation/navigator.js @@ -47,9 +47,7 @@ function addNavigationNavigatorContainer() { app.component('NavigatorContainer', NavigatorContainer); app.use(PerfectScrollbar); app.config.globalProperties.i18n = window.I18n; - app.mount('#sciNavigationNavigatorContainer'); - - window.navigatorContainer = app; + window.navigatorContainer = app.mount('#sciNavigationNavigatorContainer'); } if (document.readyState !== 'loading') { diff --git a/app/javascript/packs/vue/navigation/top_menu.js b/app/javascript/packs/vue/navigation/top_menu.js index 9ccad2446..5b2d92e4d 100644 --- a/app/javascript/packs/vue/navigation/top_menu.js +++ b/app/javascript/packs/vue/navigation/top_menu.js @@ -2,13 +2,11 @@ import PerfectScrollbar from 'vue3-perfect-scrollbar'; import { createApp } from 'vue/dist/vue.esm-bundler.js'; import 'vue3-perfect-scrollbar/dist/vue3-perfect-scrollbar.css'; import TopMenuContainer from '../../../vue/navigation/top_menu.vue'; -import outsideClick from '../directives/outside_click'; function addNavigationTopMenuContainer() { const app = createApp({}); app.component('TopMenuContainer', TopMenuContainer); app.use(PerfectScrollbar); - app.directive('click-outside', outsideClick); app.config.globalProperties.i18n = window.I18n; app.mount('#sciNavigationTopMenuContainer'); } diff --git a/app/javascript/packs/vue/protocol.js b/app/javascript/packs/vue/protocol.js index c3cf7eb9c..2817f5268 100644 --- a/app/javascript/packs/vue/protocol.js +++ b/app/javascript/packs/vue/protocol.js @@ -3,7 +3,6 @@ import PerfectScrollbar from 'vue3-perfect-scrollbar'; import { createApp } from 'vue/dist/vue.esm-bundler.js'; import ProtocolContainer from '../../vue/protocol/container.vue'; -import outsideClick from './directives/outside_click'; import { handleTurbolinks } from './helpers/turbolinks.js'; window.initProtocolComponent = () => { @@ -16,7 +15,6 @@ window.initProtocolComponent = () => { }); app.component('ProtocolContainer', ProtocolContainer); app.use(PerfectScrollbar); - app.directive('click-outside', outsideClick); app.config.globalProperties.i18n = window.I18n; app.config.globalProperties.inlineEditing = window.inlineEditing; app.config.globalProperties.ActiveStoragePreviews = window.ActiveStoragePreviews; diff --git a/app/javascript/packs/vue/repository_filter.js b/app/javascript/packs/vue/repository_filter.js index 74be66ca9..b5b4ec0d4 100644 --- a/app/javascript/packs/vue/repository_filter.js +++ b/app/javascript/packs/vue/repository_filter.js @@ -150,7 +150,7 @@ window.initRepositoryFilter = () => { app.component('FilterContainer', FilterContainer); app.config.globalProperties.i18n = window.I18n; app.config.globalProperties.dateFormat = $('#filterContainer').data('date-format'); - app.mount('#filterContainer'); + window.repositoryFilterObject = app.mount('#filterContainer'); handleTurbolinks(app); $('#filterContainer').on('click', (e) => { @@ -161,6 +161,4 @@ window.initRepositoryFilter = () => { $('#filtersDropdownButton').on('show.bs.dropdown', () => { $('#filtersColumnsDropdown, #savedFiltersContainer').removeClass('open'); }); - - window.repositoryFilterObject = app; }; diff --git a/app/javascript/packs/vue/repository_print_modal.js b/app/javascript/packs/vue/repository_print_modal.js index 935d1431b..ba383a258 100644 --- a/app/javascript/packs/vue/repository_print_modal.js +++ b/app/javascript/packs/vue/repository_print_modal.js @@ -30,9 +30,8 @@ function initPrintModalComponent() { }); app.component('PrintModalContainer', PrintModalContainer); app.config.globalProperties.i18n = window.I18n; - app.mount('.print-label-modal-container'); + window.PrintModalComponent = app.mount('.print-label-modal-container'); handleTurbolinks(app); - window.PrintModalComponent = app; } } diff --git a/app/javascript/packs/vue/repository_search.js b/app/javascript/packs/vue/repository_search.js index abf9791ef..74b7813eb 100644 --- a/app/javascript/packs/vue/repository_search.js +++ b/app/javascript/packs/vue/repository_search.js @@ -1,15 +1,11 @@ import { createApp } from 'vue/dist/vue.esm-bundler.js'; import RepositorySearchContainer from '../../vue/repository_search/container.vue'; -import outsideClick from './directives/outside_click'; import { handleTurbolinks } from './helpers/turbolinks.js'; window.initRepositorySearch = () => { const app = createApp({}); app.component('RepositorySearchContainer', RepositorySearchContainer); - app.directive('click-outside', outsideClick); app.config.globalProperties.i18n = window.I18n; - app.mount('#inventorySearchComponent'); + window.RepositorySearchComponent = app.mount('#inventorySearchComponent'); handleTurbolinks(app); - - window.RepositorySearchComponent = app; } diff --git a/app/javascript/packs/vue/results.js b/app/javascript/packs/vue/results.js index 8e4f5757a..0600c643c 100644 --- a/app/javascript/packs/vue/results.js +++ b/app/javascript/packs/vue/results.js @@ -1,13 +1,11 @@ import PerfectScrollbar from 'vue3-perfect-scrollbar'; import { createApp } from 'vue/dist/vue.esm-bundler.js'; import Results from '../../vue/results/results.vue'; -import outsideClick from './directives/outside_click'; import { handleTurbolinks } from './helpers/turbolinks.js'; const app = createApp({}); app.component('Results', Results); app.use(PerfectScrollbar); -app.directive('click-outside', outsideClick); app.config.globalProperties.i18n = window.I18n; app.config.globalProperties.ActiveStoragePreviews = window.ActiveStoragePreviews; app.mount('#results'); diff --git a/app/javascript/vue/navigation/navigator.vue b/app/javascript/vue/navigation/navigator.vue index 43fe6b33e..432f70548 100644 --- a/app/javascript/vue/navigation/navigator.vue +++ b/app/javascript/vue/navigation/navigator.vue @@ -12,7 +12,7 @@ @resizing="onResizeMove" @resize-end="onResizeEnd" > -