| ... | @@ -22,13 +22,10 @@ const handleUserPopoverMouseOut = ({ target }) => { |
... | @@ -22,13 +22,10 @@ const handleUserPopoverMouseOut = ({ target }) => { |
|
|
* Adds a MergeRequestPopover component to the body, hands over as much data as the target element has in data attributes.
|
|
* 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
|
|
* 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 => ({ target }) => {
|
|
const handleMRPopoverMount = ({ apolloProvider, projectPath, mrTitle, iid }) => ({ target }) => {
|
|
|
// Add listener to actually remove it again
|
|
// Add listener to actually remove it again
|
|
|
target.addEventListener('mouseleave', handleUserPopoverMouseOut);
|
|
target.addEventListener('mouseleave', handleUserPopoverMouseOut);
|
|
|
|
|
|
|
|
const { projectPath, mrTitle, iid } = target.dataset;
|
|
|
|
|
const mergeRequest = {};
|
|
|
|
|
|
|
|
|
|
renderFn = setTimeout(() => {
|
|
renderFn = setTimeout(() => {
|
|
|
const MRPopoverComponent = Vue.extend(MRPopover);
|
|
const MRPopoverComponent = Vue.extend(MRPopover);
|
|
|
renderedPopover = new MRPopoverComponent({
|
|
renderedPopover = new MRPopoverComponent({
|
| ... | @@ -36,7 +33,6 @@ const handleMRPopoverMount = apolloProvider => ({ target }) => { |
... | @@ -36,7 +33,6 @@ const handleMRPopoverMount = apolloProvider => ({ target }) => { |
|
|
target,
|
|
target,
|
|
|
projectPath,
|
|
projectPath,
|
|
|
mergeRequestIID: iid,
|
|
mergeRequestIID: iid,
|
|
|
mergeRequest,
|
|
|
|
|
mergeRequestTitle: mrTitle,
|
|
mergeRequestTitle: mrTitle,
|
|
|
},
|
|
},
|
|
|
apolloProvider,
|
|
apolloProvider,
|
| ... | @@ -57,8 +53,13 @@ export default elements => { |
... | @@ -57,8 +53,13 @@ export default elements => { |
|
|
const listenerAddedAttr = 'data-mr-listener-added';
|
|
const listenerAddedAttr = 'data-mr-listener-added';
|
|
|
|
|
|
|
|
mrLinks.forEach(el => {
|
|
mrLinks.forEach(el => {
|
|
|
if (!el.getAttribute(listenerAddedAttr)) {
|
|
const { projectPath, mrTitle, iid } = el.dataset;
|
|
|
el.addEventListener('mouseenter', handleMRPopoverMount(apolloProvider));
|
|
|
|
|
|
if (!el.getAttribute(listenerAddedAttr) && projectPath && mrTitle && iid) {
|
|
|
|
el.addEventListener(
|
|
|
|
'mouseenter',
|
|
|
|
handleMRPopoverMount({ apolloProvider, projectPath, mrTitle, iid }),
|
|
|
|
);
|
|
|
el.setAttribute(listenerAddedAttr, true);
|
|
el.setAttribute(listenerAddedAttr, true);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
| ... | |
... | |
| ... | | ... | |