Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/mr_popover/index.js')
-rw-r--r--app/assets/javascripts/mr_popover/index.js67
1 files changed, 0 insertions, 67 deletions
diff --git a/app/assets/javascripts/mr_popover/index.js b/app/assets/javascripts/mr_popover/index.js
deleted file mode 100644
index 714cf67e0bd..00000000000
--- a/app/assets/javascripts/mr_popover/index.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import Vue from 'vue';
-import VueApollo from 'vue-apollo';
-import createDefaultClient from '~/lib/graphql';
-import MRPopover from './components/mr_popover.vue';
-
-let renderedPopover;
-let renderFn;
-
-const handleUserPopoverMouseOut = ({ target }) => {
- target.removeEventListener('mouseleave', handleUserPopoverMouseOut);
-
- if (renderFn) {
- clearTimeout(renderFn);
- }
- if (renderedPopover) {
- renderedPopover.$destroy();
- renderedPopover = null;
- }
-};
-
-/**
- * Adds a MergeRequestPopover component to the body, hands over as much data as the target element has in data attributes.
- * loads based on data-project-path and data-iid more data about an MR from the API and sets it on the popover
- */
-const handleMRPopoverMount = ({ apolloProvider, projectPath, mrTitle, iid }) => ({ target }) => {
- // Add listener to actually remove it again
- target.addEventListener('mouseleave', handleUserPopoverMouseOut);
-
- renderFn = setTimeout(() => {
- const MRPopoverComponent = Vue.extend(MRPopover);
- renderedPopover = new MRPopoverComponent({
- propsData: {
- target,
- projectPath,
- mergeRequestIID: iid,
- mergeRequestTitle: mrTitle,
- },
- apolloProvider,
- });
-
- renderedPopover.$mount();
- }, 200); // 200ms delay so not every mouseover triggers Popover + API Call
-};
-
-export default (elements) => {
- const mrLinks = elements || [...document.querySelectorAll('.gfm-merge_request')];
- if (mrLinks.length > 0) {
- Vue.use(VueApollo);
-
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
- const listenerAddedAttr = 'data-mr-listener-added';
-
- mrLinks.forEach((el) => {
- const { projectPath, mrTitle, iid } = el.dataset;
-
- if (!el.getAttribute(listenerAddedAttr) && projectPath && mrTitle && iid) {
- el.addEventListener(
- 'mouseenter',
- handleMRPopoverMount({ apolloProvider, projectPath, mrTitle, iid }),
- );
- el.setAttribute(listenerAddedAttr, true);
- }
- });
- }
-};